2015-02-04 104 views
0

如果我要搜索某個特定領域中的mongodb收集我的命令看起來是這樣的:搜索動態場在MongoDB中收集

db.collection.find({ name : "John"}) 

如果我想打的字段名稱動態,命令是什麼?

實施例:

db.collection.find({ <Dyanmic field variable> : <Value>}) 

或是否有替代實現這個功能?

+0

您是否想要在代碼中使用存儲在變量中的字段名稱,例如「找到名稱存儲在變量fieldname的值爲'22'的所有文檔?或者您想要一次搜索MongoDB中的多個字段名稱,例如「找到名稱以」duck_''開頭的字段值爲「44」的所有文檔? – wdberkeley

回答

0

只需使用變量來代替字典鍵:

name = 'field_name' 
db.collection.find({name : "John"}) 
0

問題發生,當您試圖在不知道數據類型。所以爲了解決這個問題,我使用了以下內容:

def multi_row_single_field_update(self, crieteriafldnm, crieteriafldtyp, updtfldnm, updtfldval, updtfldtyp): 
    try: 
     criteria = raw_input('\nEnter ' + crieteriafldnm + ' to update\n') 
     if crieteriafldtyp == 'int': 
      count = self.my_connect.find({str(crieteriafldnm): int(criteria)}).count() 
     else: 
      count = self.my_connect.find({str(crieteriafldnm): str(criteria)}).count() 
     updt_criteria = int(criteria) if updtfldtyp == 'int' else str(criteria) 
     self.my_connect.update(
      {"$atomic": 1}, 
      {str(crieteriafldnm): updt_criteria}, 
      {"$set": {str(updtfldnm): str(updtfldval)}}, 
      upsert=False, multi=True 
       ) 
+0

我不認爲這是對OP問題的回答。嘗試着重於他的需要,這將是恕我直言,動態創建一個字典,然後執行'db.collection.find(dinamically_built_dict)'。 – p1100i