#mongodb
#mongodb
Вопрос:
Моя коллекция — это коллекция
{
"_id" : ObjectId(""),
"from" : 1,
"to" : 2,
"message" : "Hello",
}
{
"_id" : ObjectId(""),
"from" : 2,
"to" : 1,
"message" : "Hi",
}
Я хочу выполнить SQL-запрос, подобный
select * from collection where (from=1 and to=2) or (from=2 and to=1)
В mongodb я использую
db.getCollection('collection').find({
$or:[{
$and:[
{"from": 1},
{"to": 2},
],
$and:[
{"from": 2},
{"to": 1},
]
}]
})
Но он возвращает выборку 0 записей.
Итак, как использовать (и) или (и) в mongodb
Ответ №1:
Ваш синтаксис был немного отклонен:
db.getCollection('collection').find({
$or:[{ $and:[{"from": 1}, {"to": 2}] },
{ $and:[{"from": 1}, {"to": 1}] }]
})
Каждый из элементов внутри $or
массива должен быть замкнут {...}
.