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

MongoDB Aggregation按_id分组统计各feeling值的分类计数

MongoDB 按_id分组统计不同feeling值计数实现

你可以直接通过$group阶段配合条件累加器实现需求,不需要额外的管道阶段,聚合代码如下:

db.你的集合名称.aggregate([
  {
    $group: {
      _id: "$_id",
      love: {
        $sum: {
          $cond: [{ $eq: ["$feeling", "love"] }, 1, 0]
        }
      },
      like: {
        $sum: {
          $cond: [{ $eq: ["$feeling", "like"] }, 1, 0]
        }
      },
      dislike: {
        $sum: {
          $cond: [{ $eq: ["$feeling", "dislike"] }, 1, 0]
        }
      }
    }
  }
])

逻辑说明

  • 分组维度直接指定为$_id,按_id字段值完成分组
  • 三个统计字段均使用$sum累加器,内嵌$cond条件判断:当前分组内遍历的文档feeling字段匹配对应枚举值时累加1,不匹配则累加0,最终直接得到每个分组下三类feeling的文档总数
  • 输出结果结构和你预期的格式完全一致,不需要额外加$project做字段映射调整

注意:MongoDB默认会给集合的文档_id字段建唯一索引,如果你这里的_id是自定义业务字段而非默认主键,建议提前给该字段建索引,能大幅提升大集合下的聚合执行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:09:18