2013-02-08 30 views
2

是否有可能根据mongodb中地图中按键的存在情况进行选择性检索?如果是这样,你怎么去做呢?根据地图中密钥的存在有选择地检索

假设我有一个文件,看起来像这样的例子..

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

我怎么能够选择性地从文档中检索给出多种可供选择的方案一/某些特定childfields?其中一些可能不存在于文档中。

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

-> output 

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

它甚至是可行的?也可以有效地做到吗? 任何帮助将是伟大的(蟒蛇,去)。

回答

0

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

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

如果某一特定领域中不存在一个给定的文档,其他匹配字段仍然会包括在内。

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