Рассмотрим эту коллекцию
/* 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?