有两个集合,
我的目标是创建一个聚合查询,获取所有用户,并且对于每个
以下是我当前的聚合查询:
users
和 reports
。我的目标是创建一个聚合查询,获取所有用户,并且对于每个
user
,包括用户的最新report
的数量。以下是我当前的聚合查询:
db.users.aggregate([{
$lookup: {
from: 'reports',
localField: '_id',
foreignField: 'userId',
as: 'report',
},
}, {
$project: {
'lastReportAmount': {
$let: {
vars: {
lastReport: {'$arrayElemAt': ['$report', 0]},
},
in: '$$lastReport.amount',
},
},
'id': '$_id',
'name': 1,
'firstLogin': 1,
'email': 1,
},
}])
这个查询能够正常工作,但是非常缓慢。
原因在于$lookup
返回了与特定userId
匹配的所有报告,而不是其中一个(最新的)。
是否有一种方法只限制$lookup
匹配一次?