使用mongoengine,如何限制我的查询,以便其中一个字段是子文档中的变量。
换句话说,什么是Mongo查询的等价物
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 :(得分:0)
原来我忘了在variables
架构定义中定义Sample
。我认为这是允许的,因为文档是DynamicDocument
,允许灵活的架构。另外,正如here指出的那样,variables__Alb
在这种情况下也是合法的。