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

如何在MongoDB中合并多文档并将字段值转换为键名

解决方案

方法1:在MongoDB聚合管道内直接转换

你可以在现有聚合管道的末尾追加2个阶段,直接在数据库侧生成目标格式的返回结果:

// 追加到现有聚合管道的末尾
{
  $group: {
    _id: null,
    kvPairs: { $push: { k: "$_id", v: "$count" } }
  }
},
{
  $replaceRoot: {
    newRoot: { $arrayToObject: "$kvPairs" }
  }
}

逻辑说明:

  • 新增的$group阶段会把所有原始聚合结果收拢到同一个分组中,将每条数据的_id作为键、count作为值,组装成键值对数组
  • 后续的$replaceRoot阶段会调用$arrayToObject运算符把键值对数组转换为对象,直接作为根级返回结果,输出就是你需要的格式。

方法2:在应用层对聚合结果做二次转换

如果你不想修改原有聚合逻辑,也可以在拿到原始聚合数组后通过代码转换,以JavaScript为例:

// 原始聚合返回结果
const originResult = [ 
  { _id: 'Complex Numbers', count: 2 }, 
  { _id: 'Calculus', count: 1 }
]
// 转换为目标格式
const targetResult = Object.fromEntries(originResult.map(item => [item._id, item.count]))

内容的提问来源于stack exchange,提问作者H.B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:36:07