我有两个收藏集tasks
和stats
。
在tasks
集合中,有一个字段userId
,在stats
集合中,有一个我需要分组的数字字段result
和与之相关的taskId
字段到_id
集合中的tasks
。
两个集合中都有大约4万条记录,当我进行聚合查询以计算result
时,它可以是数字1、2、3 ...聚合需要几秒钟。
result
和taskId
字段上有索引。
查询如下
db.getCollection('tasks').aggregate( [
{ $match: { userId: 'userId' }},
{ $lookup:
{
from: "stats",
localField: "_id",
foreignField: "taskId",
as: "related"
}
},
{ $unwind:"$related" },
{ $project: {
result:'$related.result'
}},
{ $group: { _id: "$result", count: { $sum: 1 } } },
])
如何改进它以使其更快?
当我仅对stats
集合进行相同查询时,需要花费毫秒,但是我需要查询特定用户。