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

MongoDB如何通过聚合将对象数组转换为键值对对象

实现方案

使用MongoDB聚合的$arrayToObject操作符即可完成转换,全程无需使用$unwind,不会破坏键值对的对应关系。

聚合管道代码

db.yourCollection.aggregate([
  {
    $replaceRoot: {
      newRoot: {
        $arrayToObject: {
          $map: {
            input: "$items",
            in: {
              k: "$$this.key",
              v: "$$this.value"
            }
          }
        }
      }
    }
  }
])

执行逻辑

  • 先用$map遍历原items数组,把每个元素的key、value字段映射为k、v字段,适配$arrayToObject的输入要求
  • 再通过$arrayToObject将处理后的k-v数组合并为单个对象
  • 最后用$replaceRoot将生成的对象设置为文档根节点,直接输出目标结构

如果不需要直接替换根节点,只想新增字段存储转换结果,可以把$replaceRoot换成$addFields:

{
  $addFields: {
    result: {
      $arrayToObject: {
        $map: {
          input: "$items",
          in: { k: "$$this.key", v: "$$this.value" }
        }
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:54:04