使用 Python 字典查询 mongo 集合

Query mongo collection using Python dict

我的 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 接受我的查询?请注意,我的查询词典的 'values' 始终是列表。

编辑:

扩展下面的 Belly Buster 的回答,我相信如果我这样做的话:

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

回答了我的问题。但是,我觉得有更好的方法可以实现这一点。有吗?

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

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

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

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

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