2016-01-22 5 views
1

Я боролся с этим все утро. Я пытаюсь вытащить один вложенный объект из массива. Я был following along with the mongo query docs, но я не могу вернуть желаемый объект.Вернуть единый вложенный массив с использованием mongoose

videocollection

{ 
    "_id": ObjectID("95738ax1795b45f0hgn8dbfd8"), 
    "playlist": [ 
    { 
     "videos": [ 
     { 
      "title": "Video Title 1", 
      "slug": "video-1"  
     }, 
     { 
      "title": "Video Title 2", 
      "slug": "video-2" 
     } 
     ], 
     "related": [ 
     { 
      .... 
     } 
     ] 
    } 
    ] 
} 

Когда я запускаю следующие запросы в MongoDB CLI я либо получить нулевой результат возвращается или весь документ.

db.videocollection.find({}, { $elemMatch: {'playlist.videos.slug':'video-2'} }) 

db.videocollection.find({}, {_id: 0, 'playlist.0.videos': {$elemMatch: {'slug': 'video-2' }}}) 

Я пытаюсь запросить против slug в массиве видео.

+1

Вы хотите, чтобы весь «плейлист» использовался с «видео», имеющим только соответствующий под-документ? Отправьте ожидаемый результат. – BatScream

ответ

0

Правильный запрос будет:

db.videocollection.find({ 'playlist.$.videos': { $elemMatch: { 'slug': 'video-2'} } }) 

$ является positional operator и представляет любой индекс в массиве.

+0

К сожалению, это все еще остается пустым, когда я запускаю его через CLI. Я нахожусь на mongo 3.2.1 – hybrid9

+0

Это исправлено. '$ elemMatch' работает с массивом. В моем предыдущем решении был выбран один элемент. – gnerkus

Смежные вопросы