Подтвердить что ты не робот

Mongoose: множественный запрос заполняется одним вызовом

В Mongoose я могу использовать запрос для заполнения дополнительных полей после запроса. Я также могу заполнить несколько путей, например

Person.find({})
 .populate('books movie', 'title pages director')
 .exec()

Тем не менее, это создаст поиск в книге, собирающей поля для названия, страниц и режиссера, а также поиск в фильме, собирающем поля для названия, страниц и директора. Я хочу получить титул и страницы только из книг, а режиссер из фильма. Я мог бы сделать что-то вроде этого:

Person.find({})
 .populate('books', 'title pages')
 .populate('movie', 'director')
 .exec()

который дает мне ожидаемый результат и запросы.

Но есть ли способ иметь поведение второго фрагмента, используя аналогичный синтаксис "одной строки", такой как первый фрагмент? Причина этого заключается в том, что я хочу программно определить аргументы для функции заполнения и передать ее. Я не могу сделать это для нескольких вызовов заполнения.

4b9b3361

Ответ 1

Изучив исходный код mongoose, я решил это с помощью

var populateQuery = [{path:'books', select:'title pages'}, {path:'movie', select:'director'}];

Person.find({})
 .populate(populateQuery)
 .execPopulate()

Ответ 2

вы также можете сделать что-то вроде:

{path:'user',select:['key1','key2']}