$concat 用于 mongosh updateOne 方法中的一个字段

$concat for one field in mongosh updateOne method

我想根据其 ID 更新电子邮件字段的特定文档,但我不想完全覆盖电子邮件字段。相反,我只想在它旁边添加一个字符串(将它与另一个字符串连接起来),即我需要电子邮件的当前值并在其旁边添加一个字符串。

例如,如果文档中的电子邮件字段是 example@email.com,我想将其更新为 example@email.com___deleted

这是我试过的方法,但显示错误

db.testme.updateOne({_id: ObjectId("626bc5ddd6e2abe315ff8c76")}, {$set: {$concat: {email: ['$email', '___deleted']}} })

MongoServerError: The dollar ($) prefixed field '$concat' in '$concat' is not allowed in the context of an update's replacement document. Consider using an aggregation pipeline with $replaceWith.

使用Update with Aggregation Pipeline.

db.testme.updateOne({
  _id: ObjectId("626bc5ddd6e2abe315ff8c76")
},
[
  {
    $set: {
      email: {
        $concat: [
          "$email",
          "___deleted"
        ]
      }
    }
  }
])

Sample Mongo Playground