【问题标题】:How can I add a new field from another one value?如何从另一个值添加新字段?
【发布时间】:2021-05-28 01:16:52
【问题描述】:

我有一个“人”集合,其中包含类似这样的文档:

{
  _id: "...",
  name: "...",
  age: "..."
}

我想对此集合的所有文档执行更新,以便它们有一个额外的字段“actualName”,其内容与“名称”完全相同。我试过这个:

db.people.updateMany({}, { $set { actualName: $name } })

但我收到此错误:

$name 未定义

我是从 MongoSH (Compass) 做的。

【问题讨论】:

  • 看到这个answer会有所帮助,你不能在简单的更新查询中使用内部字段作为另一个字段的值,你可以尝试使用聚合管道进行更新。和一点类似的question。

标签: mongodb


【解决方案1】:

你可以使用 aggregation updates 的东西

db.collection.update({},
[
  {
    "$set": {
      "actualName": "$name"
    }
  }
])

工作Mongo playground

【讨论】:

  • 天哪...我已经尝试了所有带有引号和聚合的组合,但不是这个。谢谢!
【解决方案2】:

从 Mongo 4.2 开始,您可以使用 aggregation pipeline 和 update() 方法来使用其他字段的值更新字段。你可以这样做:

db.collection.update({},
[
  {
    "$set": {
      "actualName": "$name"
    }
  }
],
{
  "multi": true
})

这是一个工作示例:https://mongoplayground.net/p/sqZBDLGJy48

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-24
    • 2015-08-22
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多