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

如何在MongoDB中按名称分组并聚合对应ID列表?

MongoDB 按名称分组并聚合ID列表

你的核心问题是分组键选择错误,之前的$group用$_id作为分组依据,会把每个文档单独分组,完全不符合需求。下面是正确的聚合方案:

正确聚合管道

db.collection.aggregate([
  {
    $group: {
      _id: "$name", // 按name字段作为分组依据
      equipment_id: { $push: "$id" } // 将每组内的id收集到数组中
    }
  },
  {
    $project: {
      _id: 0, // 隐藏默认生成的_id字段
      equipment_name: "$_id", // 将分组的name重命名为equipment_name
      equipment_id: 1 // 保留聚合后的id列表
    }
  }
])

逻辑解释

  • $group阶段:通过_id: "$name"将所有名称相同的文档归为一组,再用$push操作把每组里的id字段值依次存入equipment_id数组。
  • $project阶段:重新定义输出结构,把分组用的_id(即原文档的name值)重命名为equipment_name,同时隐藏默认的_id字段,最终输出你需要的格式。

执行结果

运行上述管道后,会得到符合预期的输出:

[
  { "equipment_name": "Refrigerator", "equipment_id": [1, 2] },
  { "equipment_name": "TV", "equipment_id": [3, 4] }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:10:48