2015-02-04 69 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