Предположим, у меня есть такая коллекция:
{ "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 }
]
});
он вернет все документы в коллекции, потому что каждый из них содержит вложенный документ с name
из «b» или num
из 2.
Я тоже пробовал это:
db.collection.find({
arr: [
{ "name": "b", "num": 2 }
]
});
который не вызывает ошибок, но не возвращает никаких результатов.
Как вы запрашиваете несколько полей вложенного документа в MongoDB?