MongoDB:在更新前从findOneAndUpdate获取已匹配的文档

jjjwad0x  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(151)

我正在执行一个MongoDB查询来更新一个文档,如下所示-

await this.activity.findOneAndUpdate(
     { _id: activityId },
     {
       $set: { isFlagged: //boolean_value },
     },
);

在此查询的update部分中,是否有方法从上一步中获取匹配的文档?
基本上,做这样的事情-

const data = await this.activity.findOne({_id: activityId})

await this.activity.findOneAndUpdate(
     { _id: activityId },
     {
       $set: { isFlagged: !data.isFlagged }, //toggle between the previous boolean value
     },
);

是否有一种方法可以在单个查询中实现这一点?

2ekbmq32

2ekbmq321#

在具有聚合管道的更新中使用$not

db.collection.update({
  "activityId": 1
},
[
  {
    $set: {
      isFlagged: {
        $not: "$isFlagged"
      }
    }
  }
])

Mongo Playground

相关问题