2014-06-20 47 views
0

使用mongoengine,如何限制我的查詢,以便其中一個字段是子文檔中的變量。在子文檔中返回字段

換句話說,什麼是蒙戈查詢

db.sample.find({ dataset: 'DATASET1' }, { 'dataset': 1, 'sampleid': 1, 'variables.Alb': 1 }) 

相當於它返回如下的結構:

{ 
    "_id" : ObjectId("53a398561d41c85904e58d81"), 
    "dataset" : "DATASET1", 
    "sampleid" : "ID1001", 
    "variables" : { 
     "Alb" : 0.09791 
    } 
} 

我期望的mongoengine語法是這樣的

Sample.objects.filter(dataset='DATASET1') 
.only('dataset') 
.only('sampleid') 
.only('variables.Alb') 

相反,這會產生一個錯誤:

AttributeError: 'str' object has no attribute 'db_field'

我在做什麼錯?我發現還有一個選項可以執行__raw__查詢,但它不接受一組字典。

回答

0

原來我忘了在Sample模式定義中定義variables。我認爲這是允許的,因爲文檔是DynamicDocument,允許靈活的模式。另外,正如here所指出的那樣,variables__Alb在這種情況下也是合法的。

相關問題