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

MongoDB如何批量转换列数据结构并存储到新列

MongoDB批量生成列B的解决方案

可以实现批量更新,不需要逐行处理。你之前的代码问题在于直接将整个数组$A赋值给了key字段,导致生成的是单个对象而非数组对象列表。正确的做法是使用MongoDB的$map聚合操作符,遍历数组A的每个元素,生成对应的对象。

正确的批量更新代码

table.update_many({}, [
    {
        "$set": {
            "B": {
                "$map": {
                    "input": "$A",
                    "as": "item",
                    "in": {"key": "$$item", "level": 1}
                }
            }
        }
    }
])

代码说明

  • $map操作符会遍历input指定的$A数组,将每个元素赋值给as定义的变量item(用$$item引用)
  • in字段定义了每个元素要转换的结构,这里生成包含key(对应数组元素)和固定level:1的对象
  • 整个$map的执行结果就是你期望的对象数组,直接赋值给字段B

注意事项

该写法要求MongoDB版本在4.2及以上,因为从这个版本开始支持在update_many中使用聚合管道作为更新操作。

执行后,每条数据的B字段会被更新为:

[
  { key: 1, level: 1 },
  { key: 2, level: 1 },
  { key: 3, level: 1 },
  { key: 4, level: 1 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:15:28