是否可以根据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)。
答案 0 :(得分:0)
是的,这就是find
的projection
参数的目的:
db.collection.find({_id: 1234}, {
'parentfield1.childfield1': 1,
'parentfield1.childfield2': 1,
'parentfield1.childfield3': 1
});
如果给定文档中不存在指定字段,则仍会包含其他匹配字段。
如果您希望它是动态的,请以编程方式构建projection
参数对象。