【发布时间】:2019-08-29 17:50:18
【问题描述】:
我注意到 mongoose 4.7.3 中的 .populate 函数在每次查找时在数据库上运行单独的查询:
db.House
.populate('ownerId')
.exec((err, result) => {
..
使用聚合管道,我们可以通过单个查询查找多个集合:
db.House.aggregate([
{
$lookup:
{
from: 'owners',
localField: 'ownerId',
foreignField: '_id',
as: 'owner',
},
mongoose 使用 .populate 进行单独查询的原因是什么?聚合函数在查找时性能更高吗?
【问题讨论】:
-
Mongoose 中的
populate()功能是一种客户端查询聚合功能,早于 MongoDB 3.2 中添加服务器端$lookup支持。