【问题标题】:Return a field in a subdocument返回子文档中的字段
【发布时间】:2014-06-20 11:34:13
【问题描述】:

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

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-09-27
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2014-06-08
      • 2019-09-09
      相关资源
      最近更新 更多