在mongodb集合中搜索动态字段

时间:2015-02-04 21:04:25

标签: python mongodb pymongo

如果我要在mongodb集合中搜索特定字段,我的命令将如下所示:

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

如果我想让字段名称动态,命令是什么?

示例:

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

或者有替代方法可以实现这个功能吗?

2 个答案:

答案 0 :(得分:0)

只需使用变量代替字典键:

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

答案 1 :(得分: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
               )