MongoDB中关联leads与pdata集合统计符合条件的leadId数量
MongoDB关联leads与pdata集合统计符合条件的leadId数量
可以通过MongoDB聚合管道实现需求,核心用$lookup关联两个集合,配合$match过滤条件,最后用$count统计数量。具体查询语句如下:
db.leads.aggregate([ // 先过滤leads集合中符合基础条件的文档 { $match: { status: "OPENED", "crossSell.cc.consent": true, "crossSell.cc.shown.0.first": true } }, // 关联pdata集合,匹配对应的activeLeadId { $lookup: { from: "pdata", localField: "leadId", foreignField: "activeLeadId", as: "matchedPdata" } }, // 过滤存在有效匹配pdata的记录,且pdata中至少有一个details.rating≥5 { $match: { matchedPdata: { $ne: [] }, "matchedPdata.details.rating": { $elemMatch: { $gte: 5 } } } }, // 统计符合所有条件的leadId数量 { $count: "qualifiedLeadCount" } ])
语句说明:
- 第一阶段$match:先筛选leads中状态为OPENED、cc.consent为true、shown数组首个元素first为true的文档,减少后续关联的数据量。
- $lookup:将leads的leadId与pdata的activeLeadId关联,匹配到的pdata文档存入
matchedPdata数组。 - 第二阶段$match:剔除未匹配到pdata的记录,同时确保匹配到的pdata里至少有一条details的rating满足≥5的要求。
- $count:最终输出符合所有条件的leadId总数,结果字段名为
qualifiedLeadCount。
内容的提问来源于stack exchange,提问作者surendrapanday
相关产品推荐
相关产品推荐

