使用Python字典查询mongo集合

时间:2020-11-10 17:00:07

标签: python mongodb pymongo

我的MongoDB文档如下:

{
  'x': 1,
  'y': 2,
  'z': 3
},
{
  'x': 10,
  'y': 20,
  'z': 30
},
{
  'x': 100,
  'y': 200,
  'z': 300
},

查询如下:

query_1 = {
  'x': [1, 100]
}

query_2 = {
'x': [10],
'z': [2]
}

不幸的是,当我们执行collection.find(query_1)collection.find(query_2)时,由于查询中的列表而没有得到任何结果。我如何让Mongo接受查询?请注意,我的查询字典的“值”始终是列表。

编辑:

相信下面我会扩大Belly Buster的答案,

{
'$or': [
         {'x': {'$in': ['item1', 'item2']}},
         {'y': {'$in': ['item1', 'item2']}}
        ]
}

回答我的问题。但是,我认为有更好的方法可以实现这一目标。有吗?

1 个答案:

答案 0 :(得分:1)

查询1,您正在搜索包含列表x的字段[1, 100]。由于没有匹配的记录,因此没有结果。现在,如果要在x中搜索1或100,则需要使用$in运算符;您的查询应该是:

result = db.mycollection.find({'x': {'$in': [1, 100]}})

查询2,您正在搜索包含列表x的字段[10]和包含列表z的字段[2]。同样,您的数据中没有匹配的内容。

我不确定您要为此执行哪个查询,但是如果它是x == 10 or z == 2,则您的查询是:

result = db.mycollection.find({'$or': [{'x': 10}, {'z': 2}]})
相关问题