Mongodb 如何从另一个值添加新字段?

Mongodb 如何从另一个值添加新字段?,mongodb,Mongodb,我有一个“人物”收藏,里面有这样的文档: { _id: "...", name: "...", age: "..." } 我想对该集合的所有文档执行更新,以便它们有一个额外的字段“actualName”,其内容与“name”完全相同。我试过这个: db.people.updateMany({}, { $set { actualName: $name } }) 但我得到了这个错误: 未定义$name 我是在MongoSH(

我有一个“人物”收藏,里面有这样的文档:

{
  _id: "...",
  name: "...",
  age: "..."
}
我想对该集合的所有文档执行更新,以便它们有一个额外的字段“actualName”,其内容与“name”完全相同。我试过这个:

db.people.updateMany({}, { $set { actualName: $name } })
但我得到了这个错误:

未定义$name


我是在MongoSH(指南针)上做的。

你可以用一些东西


工作

从Mongo 4.2开始,您可以使用
聚合管道
update()
方法使用其他字段的值更新字段。您可以这样做:

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

下面是一个工作示例:

请看这将有所帮助,您不能在简单的更新查询中将内部字段用作另一个字段的值,您可以尝试使用聚合管道进行更新。还有一点相似,我的上帝。。。我已经尝试了所有带引号和聚合的组合,但这次没有。非常感谢。
db.collection.update({},
[
  {
    "$set": {
      "actualName": "$name"
    }
  }
],
{
  "multi": true
})