【发布时间】:2017-11-18 07:24:15
【问题描述】:
我一直在通过数组内部的 mongodb 查询。我已经得到了他们为我提供的查询单个数组的示例。但是,如果我有两个不同的数组并想将它们组合成一个查询,这将如何工作?例如 item1 和 item2 是两个不同的数组。
# example given in mongodb document
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
# example of query of what I am trying achieve query two arrays
db.inventory.find( { item1: { $in: [ item1_value ] } { item2: { $in: [ item2_value ] } } )
mongodb参考文档:https://docs.mongodb.com/manual/reference/operator/query/in/
我还应该提到,我正在使用 mongodb 来了解命令的外观,但最终该命令应该适用于 pymongo,因为该命令将通过 pymongo 执行。
# correct query example as given by Moshe
db.inventory.find({
$or: [
{ item1: { $in: [ item1_value ] }},
{ item2: { $in: [ item2_value ] }}
]
});
【问题讨论】:
-
您应该注意,如果您的
itemX_value实际上只是单个值而不是数组本身,那么您不需要$in来搜索作为数组的文档属性。因此,除非$in的参数需要是一个“列表”,否则您只需这样做。.find({ '$or': [ { 'item1: 1 }, {'item2': 2 } ]})。$in如果用于“参数列表”.find({ '$or': [ { 'item1': { '$in': [1,2] } }, { 'item2': { '$in': [1,2] } } ] })。 MongoDB 不关心'item1'本身是否实际上是一个数组,因为它只会在其成员中搜索“奇异”提供的值。是的,python 语法是相同的 -
感谢您的澄清。我会记住这一点。