考虑此收藏
/* 1 */
{
"key" : 1,
"b" : 2,
"c" : 3
}
/* 2 */
{
"key" : 2,
"b" : 5,
"c" : 4
}
/* 3 */
{
"key" : 3,
"b" : 7,
"c" : 9
}
/* 4 */
{
"key" : 4,
"b" : 7,
"c" : 4
}
/* 5 */
{
"key" : 5,
"b" : 2,
"c" : 9
}
我想使用$ in运算符并编写查询以返回文档(b,c)IN((2,3),(7,9))。这意味着“同时返回b为2并且c为3的所有行,或者b为7并且с为9的所有行。”
如何使用$ in运算符使用多个属性值。
如果我使用以下查询
db.getCollection('test').find({
$and:[
{b:{$in:[2,7]}},
{c:{$in:[3,9]}}
]
})
然后我得到以下结果
(2,3)
(7,9)
(2,9)->这是不需要的记录。
在SQL世界中,这是可能的 选择 * 从演示 (b,c)IN((2,3),(7,9))
Mongo DB中的等效功能是什么?
答案 0 :(得分:0)
如果我做对了,那么您正在做的就是获取所有对(2,3),(2,9),(7,3),(7,9)。 但是,您想一一匹配,因此您的有效对应该是(2,3),(7,9)。要满足此要求,您可以将b和c一对一地匹配,配对,然后再“或”它们。
db.getCollection('test').find({
$or: [
{$and: [ {b : 2}, {c : 3} ]},
{$and: [ {b : 7}, {c : 9} ]}
]
})