mongoose:多个查询在一次调用中填充

在Mongoose中,我可以使用查询填充查询后填充其他字段。 我也可以填充多个path,比如

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

但是,这样做会在搜集书名,页面和导演的书籍时产生一个查询,同时也会查找关于标题,页面和导演的电影。 我想要的只是从书本中得到书名和页面,而从电影中导演。 我可以做这样的事情:

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

这给了我预期的结果和查询。

但有没有什么办法让第二个片段的行为像第一个片段一样使用类似的“单行”语法? 原因是,我想以编程方式确定填充函数的参数,并将其馈入。我无法为多个填充调用执行此操作。

在查看mongoose的源代码后,我解决了这个问题:

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

你也可以做如下的事情:

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