在Mongoose中,我可以使用查询填充来填充查询后的其他字段,还可以填充多个路径,例如
Person.find({})
.populate('books movie', 'title pages director')
.exec()
然而,这将生成一个查找图书收集的字段为标题,页和导演-也查找电影收集的字段为标题,页和导演以及.我想要的是得到标题和页从图书只,导演从电影.我可以这样做:
Person.find({})
.populate('books', 'title pages')
.populate('movie', 'director')
.exec()
它给出了预期的结果和查询。
但是有没有办法让第二个代码段的行为使用类似于第一个代码段的“单行”语法呢?这样做的原因是,我想通过编程来确定populate函数的参数并将其输入。我不能为多个populate调用这样做。
5条答案
按热度按时间vzgqcmou1#
//架构必须包含路径
mlmc2os52#
在研究了mongoose的源代码之后,我用以下方法解决了这个问题:
f1tvaqid3#
你也可以做一些如下:
tzdcorbm4#
只需将对象或对象数组传递给populate()方法即可实现。
考虑lean()方法是可选的,它只返回原始json而不是mongoose对象,这会使代码执行速度快一些!不要忘记使你的函数(回调)异步!
yruzcnhs5#
这是基于Mongoose JS文档http://mongoosejs.com/docs/populate.html的实现方式
假设您有一个包含用户和图书的BookCollection架构。为了执行查询并获取所有BookCollection及其相关用户和图书,您需要执行以下操作