根据地图中的键的存在选择性地检索

时间:2013-02-08 16:18:11

标签: python mongodb go querying

是否可以根据mongodb中地图中键的存在来有选择地检索?如果是这样,你怎么去做呢?

假设我有一个看起来像这样的文档..

{ "_id": 1234,
    "parentfield1" : {
        "childfield1" : { ...},
        "childfield2" : { ...},
        "childfield5" : { ...}, // There might be many childfields.. > 50
    },
} 

如果有多个选项可供选择,我如何能够有选择地从文档中检索某个特定子域?其中一些可能不存在于文件中。

即。

input "childfield1", "childfield2", "childfield3"

-> output 

{ "_id": 1234,
  "parentfield1": {
      "childfield1" : { ... },
      "childfield2" : { ... },
  },
}

它甚至可行吗?是否有可能有效地做? 任何帮助都会很棒(python,go)。

1 个答案:

答案 0 :(得分:0)

是的,这就是findprojection参数的目的:

db.collection.find({_id: 1234}, {
    'parentfield1.childfield1': 1,
    'parentfield1.childfield2': 1,
    'parentfield1.childfield3': 1
});

如果给定文档中不存在指定字段,则仍会包含其他匹配字段。

如果您希望它是动态的,请以编程方式构建projection参数对象。