You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB如何按指定字段去重统计并输出含0计数的分类结果

问题原因

原查询无法输出计数为0的分类组合,是因为第一步的$match操作直接过滤掉了所有cat_type != "A"的文档,categoryCode2对应的文档根本没有进入后续分组逻辑,所以结果中不会出现该分类。

解决方法

不需要提前过滤文档,先按categoryCode + categoryName做全量分组,统计数量时通过$cond条件判断只累加符合cat_type要求的文档即可,具体聚合语句如下:

db.collection.aggregate([
  {
    $group: {
      _id: {
        categoryCode: "$categoryCode",
        categoryName: "$categoryName"
      },
      // 仅对cat_type为A的文档计数,不符合要求的不累加
      cat_count: {
        $sum: {
          $cond: [{ $eq: ["$cat_type", "A"] }, 1, 0]
        }
      }
    }
  },
  {
    $project: {
      _id: 0,
      categoryCode: "$_id.categoryCode",
      categoryName: "$_id.categoryName",
      cat_count: 1
    }
  }
])

如果数据量较大,你可以给categoryCode、categoryName、cat_type三个字段加联合索引,大幅提升聚合查询的执行效率。

内容的提问来源于stack exchange,提问作者prabhakar srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:15:03