2017-04-14 334 views
1

我有一個我想查詢的地圖字段。喜歡的東西:Mongoengine:查詢MapField

class User(mongoengine.Document): 
    email = mongoengine.EmailField(required=False, unique=False) 
    username = mongoengine.StringField(max_length=30, min_length=6, required=True, unique=True) 
    password = mongoengine.StringField(max_length=500, min_length=6, required=True) 
    profiles = mongoengine.MapField(mongoengine.EmbeddedDocumentField(DeviceProfile)) 

所以在外地,型材,我存儲的對象,像這樣:DEVICE_ID:DeviceProfile對象

我試過了:User.objects(profiles__device_id=device_id)無濟於事。如何查詢,以便僅返回在配置文件字段中具有特定鍵的用戶對象?基本上,我想根據其設備ID查詢包含某個DeviceProfile對象的用戶文檔。

回答

1

將此處留給遇到此問題的其他人。

要使用地圖字段的關鍵字檢索Mongoengine文檔,請使用exists運算符。例如,該查詢可以被構造並然後被傳遞給對象的方法:

處理所述exists操作者像「常規」的查詢,因爲任何非空,非零值將被視爲不工作作爲True,並且匹配將返回MapField中有東西的任何文檔。例如:

Users.object(profiles__exists=key) 

將返回具有非空MapField的所有對象。