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

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

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

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

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

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

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

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

 var populateQuery = [{path:'books', select:'title pages'}, {path:'movie', select:'director'}]; Person.find({}) .populate(populateQuery) .execPopulate() 

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

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

Вот как это делается на основе документации Mongoose JS http://mongoosejs.com/docs/populate.html

Допустим, у вас есть схема BookCollection, которая содержит пользователей и книги. Чтобы выполнить запрос и получить все BookCollections со связанными с ним пользователями и книгами, вы сделаете это

 models.BookCollection .find({}) .populate('user') .populate('books') .lean() .exec(function (err, bookcollection) { if (err) return console.error(err); try { mongoose.connection.close(); res.render('viewbookcollection', { content: bookcollection}); } catch (e) { console.log("errror getting bookcollection"+e); } 
  • Индексирование Mongoose в производственном коде
  • Строка Node.js Mongoose.js для функции ObjectId
  • Как сделать сырые операции mongodb в мангусте?
  • Схема Mongoose не была зарегистрирована для модели
  • Выполнение запросов mongoose.js синхронно
  • Сравнение mongoose _id и строк
  • Как я могу использовать cursor.forEach () в MongoDB с помощью Node.js?
  • получение атрибутов схемы из модели Mongoose
  • Как вернуть результаты Mongoose из метода поиска?
  • MongoDB - получать документы с максимальным атрибутом для каждой группы в коллекции
  • Запрос после заполнения в Mongoose
  • Давайте будем гением компьютера.