MongoDB聚合匹配项目后非常慢

时间:2017-10-02 14:34:37

标签: mongodb

我在MongoDB中有一个包含5个阶段的聚合查询。匹配,查找,项目,项目和匹配。如果最终匹配没有结果,则查询需要45秒。如果匹配产生结果,那么它需要不到100毫秒。

db.instances.aggregate([ 
{ $match: { "Record.Closed": null } }, 
{ $lookup: { from: "messages", localField: "Record.ApprovalId", foreignField: "Record.ApprovalId", as: "approvalMessages" } }, 
{ $project: { Record: 1, parsed: 
       { $filter: { input: "$approvalMessages", as: "item", cond: { $or: [ { $eq: [ "$Record.LastRoundupSent", null ] }, 
       { $gte: [ "$$item.Record.Created", "$Record.LastRoundupSent" ] } ] } } } } },
 { $project: { Record: 1, MessageCount: { $size: "$parsed" } } } , 
 { $match: { "MessageCount" : { $gt : 0 } } } 
 ])

最终$match会导致我的查询在返回0结果时挂起 如果我将其更改为:{ $match: { "MessageCount" : { $eq : 0 }}}那么就可以了。

有什么想法吗?

0 个答案:

没有答案