You need to enable JavaScript to run this app. 能否使用MongoDB聚合框架完成指定格式的数据结构重构
优惠活动
大模型
产品
解决方案
定价
更多

能否使用MongoDB聚合框架完成指定格式的数据结构重构

MongoDB 聚合框架实现数组结构自定义转换

完全可以通过MongoDB聚合框架完成要求的结构调整,无需将数据拉取到应用层做二次加工

核心转换逻辑落地

要求的转换规则可以直接通过聚合管道的数组遍历、动态对象构造能力实现,对应操作拆解:

  • 定位文档中的array字段,逐一遍历数组内的每个元素
  • 提取元素内的date字段值,作为转换后对象的唯一键
  • 取同一元素内nestedArray的取值,作为上述键关联的数组值
  • 将每个元素转换生成的单键对象重新拼接为新数组,替换原有结构

可直接运行的聚合实现

以下代码适配MongoDB 3.4及以上版本(该版本首次支持$arrayToObject动态对象构造能力):

db.你的集合名.aggregate([
  {
    $set: {
      array: {
        $map: {
          input: "$array",
          as: "item",
          in: {
            $arrayToObject: [
              [
                {
                  k: "$$item.date",
                  v: "$$item.nestedArray"
                }
              ]
            ]
          }
        }
      }
    }
  }
])

运行效果

针对输入的初始结构:

{
  "array": [
    {"date": "27-08-12", "nestedArray": [0, 1, 2]},
    {"date": "18-08-12", "nestedArray": [0, 2]}
  ]
}

管道执行后输出的结果完全匹配目标结构:

{
  "array": [
    {"27-08-12": [0, 1, 2]},
    {"18-08-12": [0, 2]}
  ]
}

实用提示

  • 如果需要保留原始array字段的内容,可以将代码中赋值的目标字段名从array改为自定义字段(比如convertedArray),避免覆盖原始数据
  • 若MongoDB版本低于3.4,需先升级数据库版本才能正常运行该聚合逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 23:06:01