在文档中插入字段(如果不存在)或使用Mongoose JS更新

lmvvr0a8  于 2023-02-08  发布在  Go
关注(0)|答案(1)|浏览(120)

我正在寻找一个端点,它将改变布尔值的状态,但如果文档中的字段不存在,则将其设置为true。
这是我的想法:

let updateUser = await User.findByIdAndUpdate(user_id, [
    {
      $set: {
        is_blacklisted : {
          $eq: [
            false, "$is_blacklisted"
          ]
        }
      }
    }
  ])

这样做很好,如果用户有字段"is_blacklisted",它会将其设置为相反,但如果字段不存在,什么也不会发生。
我想知道如果字段不存在,是否有一种方法可以设置为默认值。
我知道我可以先查找并检查该字段是否存在,但我想知道是否有替代/更好的方法只使用一个请求?

v9tzhpje

v9tzhpje1#

反转匹配:

{$set:{
    isBlacklisted: {$ne: [true, "$is_blacklisted"]}
}}

如果值为true,则将其更改为false,如果字段不存在或字段包含true以外的任何值,则将其设置为false。

相关问题