使用 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}]})
我的 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}]})