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

Mongoose如何按数组字段元素分组并统计type=4的文档数量

你的现有代码存在两个问题:

  • 缺少$match阶段筛选type为"4"的文档,会统计所有类型的文档数据
  • 分组结果默认将分组键存放在_id字段,没有映射回你需要的countries字段结构

正确的聚合查询写法如下:

const aggregatorOpts = [
  // 第一步:筛选符合type条件的文档
  {
    $match: {
      type: "4"
    }
  },
  // 第二步:按countries字段分组统计数量
  {
    $group: {
      _id: "$countries",
      count: { $sum: 1 }
    }
  },
  // 第三步:调整输出字段结构,匹配预期格式
  {
    $project: {
      _id: 0, // 不输出默认的_id字段
      countries: "$_id", // 将分组键赋值给countries字段
      count: 1 // 保留count字段
    }
  }
]

Model.aggregate(aggregatorOpts).exec()

因为你当前场景下每个countries数组仅包含1个元素,直接按整个数组分组可以得到正确结果,如果后续业务迭代中countries可能包含多个元素且需要按第一个国家分组,可以将$group的_id改为{$first: "$countries"}即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:02