我正在尝试基于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查询。
谢谢!
答案 0 :(得分:3)
你在寻找'col1'是'foo'还是'bar'的文件?
如果是,那么您需要db.test.find({'col1': {'$in': ['foo', 'bar']}});
要解释一下,该查询会匹配col1
的值为in
列表['foo', 'bar']
的文档。
此处记录了高级mongodb查询:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
答案 1 :(得分:1)
我认为解决方案只是一种简单的方法,你应该在dict中推送每个对象并将它们存储在一个数组中:
dict = []
your_obj = {'col1': 'foo'}
dict.append(your_obj)
dict.append({'col1': 'bar'})
for o in dict:
db.test.find(o)
答案 2 :(得分:0)
另一种方法是在mongodb中使用$exists
运算符。
query = {'col1': {'$exists': 'true'}}
db.test.find(dict)
通过这种方式,您不必指定 col1 可以采用的值。