返回子文档中的字段

时间:2014-06-20 02:44:57

标签: python mongodb mongoengine

使用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__查询,但它不接受一组字典。

1 个答案:

答案 0 :(得分:0)

原来我忘了在variables架构定义中定义Sample。我认为这是允许的,因为文档是DynamicDocument,允许灵活的架构。另外,正如here指出的那样,variables__Alb在这种情况下也是合法的。