MongoDB 更新 - 从嵌套字段设置字段

MongoDB update - set field from nested field

我想将一个字段设置为嵌套字段的值

给出

{
  "_id":"myId",
  "data":{
    "id":"asdfasdfasdf",
    "text":"Wonderful text"
  }
}

预计

{
  "_id":"myId",
  "messageId":"asdfasdfasdf",
  "data":{
    "id":"asdfasdfasdf",
    "text":"Wonderful text"
  }
}

有没有可能做这样的事情?

db.myCollection.updateMany({},{ $set: {"messageId": "$data.id"} },false,true)

我正在使用 MongoCompass -> _MongoSH

是的,可以使用 pipelined updates 在 4.2 版中添加。

你是这样使用它的:

db.collection.updateMany(
{},
[
  {
    $set: {
      "message": "$data.id"
    }
  }
])

Mongo Playground

对于较低的 Mongo 版本,您必须先阅读文档,然后使用这些值进行更新。