Mongoose - Как выбрать конкретный объект внутри массива заполненного поля в Mongoose? - PullRequest
0 голосов
/ 24 июня 2018

Я заполнил виртуальный объект в Mongoose, заполненный виртуальный будет извлекать массив объектов.

 objects:{[name:'xxx',age:20],[name:'yyy',age:21],[name:'zzz', age:23]}

Как сделать так, чтобы он получал только один указанный мной элемент?

...
.populate({
   path:'someVirtual',
   select:'objects', //get only the 'objects' array
   options: {where:'objects',elemMatch:{name:'zzz'}} //this is what I tried 
                                                     //but it doesn't work
  )}
 .exec(function(err,docs){
    //handle
  });

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете использовать match внутри заполнения

.populate({
   path:'someVirtual',
   match: { objects: { $elemMatch: { name: 'zzz' } } },
   select: 'objects'                                        
})

и если вы хотите использовать проекцию, то

.populate({
   path:'someVirtual',
   match: { objects: { $elemMatch: { name: 'zzz' } } },
   select: { objects: { $elemMatch: { name: 'zzz' } } }                                   
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...