2013-02-08 66 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參數對象,如果您希望它是動態的。