1

我正在尝试基于 python 的字典构建 mongoDB 查询。密钥在dicts中应该是唯一的问题。看例子

MongoDB数据:

{
        "_id" : ObjectId("4dcd3ebc9278000000005158"),
        col1 : 'foo'
}
{
        "_id" : ObjectId("4dcd3ebc9278000000005159"),
        col1 : 'bar'
}

Python代码:

dict = {'col1': 'foo'}
dict.update({'col1': 'bar'})

db.test.find(dict)

仅显示一行col1=='bar'

>>> dict
{'col1': 'bar'} 

如何使用不需要唯一键的字典(或任何东西)构建正确的 MongoDB 查询。

谢谢!

4

3 回答 3

3

您是否正在寻找“col1”为“foo”或“bar”的文档?

如果是这样,那么你想要db.test.find({'col1': {'$in': ['foo', 'bar']}});

解释一下,该查询匹配值为col1listin的文档['foo', 'bar']

此处记录了高级 mongodb 查询:http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in

于 2012-04-19T09:25:33.103 回答
1

我认为您的解决方案只是一种简单的方法,您应该将每个对象推送到一个字典中并将它们存储在一个数组中:

dict = []
your_obj = {'col1': 'foo'}
dict.append(your_obj)
dict.append({'col1': 'bar'})
for o in dict:
    db.test.find(o)
于 2012-04-19T09:34:00.450 回答
0

另一种方法是$exists在 mongodb 中使用运算符。

query = {'col1': {'$exists': 'true'}}
db.test.find(dict)

这样您就不必指定col1可以采用的值。

于 2020-10-01T03:31:47.803 回答