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

MongoDB updateMany查询无法正确映射已有字段值至新对象

解决MongoDB字段迁移至嵌套对象的问题

你的问题出在普通$set操作无法解析嵌套对象内的字段引用($字段名),直接写会被当作字符串字面量。要实现将现有字段值复制到新的questionAnswers对象中,需要使用聚合管道式的更新语法(MongoDB 4.2+支持)。

正确的查询语句

db.getCollection("users").updateMany(
  { _id: ObjectId('65d8fd25618ef79985233636') },
  [
    {
      $set: {
        questionAnswers: {
          hobbies: "$hobbies",
          islandItems: "$islandItems",
          superPower: "$superPower"
        }
      }
    }
  ]
)

关键说明

  • 将更新操作的第二个参数从普通对象改为数组,MongoDB会将其识别为聚合管道,此时$hobbies这类语法会被解析为对文档现有字段的引用,而非字符串。
  • 执行后,questionAnswers对象内的字段会正确复制原字段的数值,而不是保留带$的字符串。
  • 确保你的MongoDB版本不低于4.2,该版本才引入了聚合管道式更新的支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:42:02