我注意到猫鼬4.7.3中的.populate函数针对每次查找在数据库上运行单独的查询:
db.House
.populate('ownerId')
.exec((err, result) => {
..
借助聚合管道,我们可以通过单个查询查找多个集合:
db.House.aggregate([
{
$lookup:
{
from: 'owners',
localField: 'ownerId',
foreignField: '_id',
as: 'owner',
},
猫鼬用.populate进行单独查询的原因是什么?聚合函数在查找时性能更高吗?
答案 0 :(得分:2)
以下是区别的摘要:
$lookup
aggregate
猫鼬populate()
find
和aggregate
一起使用_id
提取引用的文档