我收集了以下数据
_id name type
1 Banana Fruit
2 Tomato Vegetable
3 Carrot Vegetable
4 Tomato Fruit
我的查询输入是一个成对的数组
[
{
name : 'Banana',
type : 'Fruit'
},
{
name : 'Tomato',
type : 'Vegetable'
}
]
我想要的结果是与数组中任何一对匹配的文档
_id name type
1 Banana Fruit
2 Tomato Vegetable
我试过了
db.data.find({$and: [
{name : {$in : ['Banana', 'Tomato']}},
{type : {$in : ['Fruit', 'Vegetable']}}
]})
但我知道
_id name type
1 Banana Fruit
2 Tomato Vegetable
4 Tomato Fruit
这不是我想要的
最佳答案
以下查询可以获得预期的输出:
db.collection.find(
{
$or:[
{
name : 'Banana',
type : 'Fruit'
},
{
name : 'Tomato',
type : 'Vegetable'
}
]
}
).pretty()
数据集:
{ "_id" : 1, "name" : "Banana", "type" : "Fruit" }
{ "_id" : 2, "name" : "Tomato", "type" : "Vegetable" }
{ "_id" : 3, "name" : "Carrot", "type" : "Vegetable" }
{ "_id" : 4, "name" : "Tomato", "type" : "Fruit" }
输出:
{ "_id" : 1, "name" : "Banana", "type" : "Fruit" }
{ "_id" : 2, "name" : "Tomato", "type" : "Vegetable" }
关于mongodb - $ in in MongoDB中的多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57803712/