You need to enable JavaScript to run this app. 如何使用MongoDB统计交易状态为S的去重客户总数量?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MongoDB统计交易状态为S的去重客户总数量?

MongoDB 按规则实现客户总数统计

核心统计规则

需要完成的统计逻辑完全匹配业务要求:

  • 先做记录筛选:仅保留 transactions_status 字段值等于 "S" 的数据
  • 再做客户去重:以 email_address 字段作为客户唯一标识,同一邮箱不重复计数
  • 最终输出固定结构的统计结果,无额外分组维度

预期返回结构示例:

{
  "_id": null,
  "count": "经筛选、去重后的客户总数量"
}

聚合查询实现

采用MongoDB原生聚合管道完成计算,按照"先过滤减少数据量、再去重、最后计数"的顺序编排流程,尽可能降低查询的性能消耗:

  1. 第一阶段匹配过滤:用 $match 算子筛选出所有交易状态为 S 的文档,避免全量数据参与后续计算
  2. 第二阶段分组去重:以 email_address 作为分组键执行首次分组,每个唯一邮箱对应一个分组,实现天然去重效果
  3. 第三阶段总计数统计:对去重后的分组集合做二次聚合,固定 _id 为 null,统计分组总个数作为最终的客户总量

可直接替换集合名运行的查询代码:

db.你的业务集合名.aggregate([
  // 筛选状态为S的记录
  { $match: { transactions_status: "S" } },
  // 按邮箱去重
  { $group: { _id: "$email_address" } },
  // 统计去重后的总客户数
  { 
    $group: {
      _id: null,
      count: { $sum: 1 }
    }
  }
])

性能优化参考

当集合数据量达到百万级以上时,建议在 transactions_status、email_address 两个字段上建立联合索引,聚合查询可直接通过索引获取目标数据,无需扫描全表,能大幅缩短查询响应时间。

内容的提问来源于stack exchange,提问作者Manfred Tijerino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 19:45:03