Полагаю, у вас есть что-то вроде этого:
foo
{
_id: 1,
bars :[
{name: "1"},
{name: "2"}
]
}
Итак, запросы mongodb всегда возвращают только корневые документы:
db.foos.find({"bars.name": 1})
Выше запроса вернет все foos, содержащие строку с именемравно "1".Получить нужную полосу можно на стороне клиента.
Также, если вам нужен только один элемент из встроенного массива, вы можете использовать ломтик и включать только корневой документ t для загрузки минимума данных.:
db.foos.find({"bars.name": 1}, {bars:{$slice: 1}, _id: 1})
Вышеупомянутый запрос вернет все foos, содержащие строку с именем, равным «1», но он также содержит только одну совпавшую вложенную строку и вернет только идентификатор родительского документа, поэтому на стороне клиента вам понадобитсязагрузить первый элемент из массива вложенных баров.