Предположим, что у меня есть такая коллекция:
{ "arr" : [ { "name" : "a", "num" : 1 }, { "name" : "a", "num" : 2 } ] },
{ "arr" : [ { "name" : "b", "num" : 1 }, { "name" : "a", "num" : 2 } ] },
{ "arr" : [ { "name" : "b", "num" : 1 }, { "name" : "b", "num" : 2 } ] }
и я хочу найти все документы, которые arr
содержат поддокумент с name
= "b" и num
= 2.
Если я сделаю такой запрос:
db.collection.find({
$and: [
{ "arr.name": "b" },
{ "arr.num": 2 }
]
});
он вернет все документы в коллекции, потому что каждый из них содержит поддокумент с a name
из "b" или num
из 2.
Я также пробовал это:
db.collection.find({
arr: [
{ "name": "b", "num": 2 }
]
});
который не вызывает никаких ошибок, но не возвращает никаких результатов.
Как вы запрашиваете несколько полей субдоку в MongoDB?