FindOne встроенный документ - PullRequest
       2

FindOne встроенный документ

1 голос
/ 05 февраля 2012

У меня есть bars, встроенный в foos, поэтому теперь я хочу получить один конкретный bar из foo:

foo = db.foos.findOne()
bar = foo.bars.findOne({property: 'Hello World'})

Итак, как мне достичь этого?

1 Ответ

2 голосов
/ 05 февраля 2012

Полагаю, у вас есть что-то вроде этого:

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», но он также содержит только одну совпавшую вложенную строку и вернет только идентификатор родительского документа, поэтому на стороне клиента вам понадобитсязагрузить первый элемент из массива вложенных баров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...