如何在Mongoose中使用findOneAndUpdate(),并保持值不变?

mw3dktmi  于 2023-01-17  发布在  Go
关注(0)|答案(1)|浏览(173)

我正在创建一个系统,如果x为真,它将递增value1,但如果y为真,它将递增value2。使用我现在的系统,它还将把没有更新的值重置回0,我不知道该怎么做才能停止此操作。我只需要另一个值相同即可
这是我的代码。

leaderboard.findOneAndUpdate(
{ 
    userID: interaction.user.id 
}, 
{
    userID: interaction.user.id,
    $inc: { accepts: 1 },
    denies: 0
}, 
{ 
    upsert: true, new: true 
},  (err: any, doc: any) => {

if (err) console.log(err)

console.log(`Updated ${interaction.user.username}'s accepts to ${doc.accepts} `)
})

所以在这个例子中,我需要接受加1,但拒绝保持与MongoDB中已有的相同。

6xfqseft

6xfqseft1#

尝试将更新查询更改为
{ $inc: { accepts: 1 } }
不确定upsert在这种情况下是否有意义。因为它会创建一个只有accepts字段的新文档。
{ upsert: true, new: true }
如果需要upsert,则根据要设置的值构建更新查询。

If (x) {
  updateQuery = {
    userID: interaction.user.id,
    $inc: { accepts: 1 },
  }
} else {
  updateQuery = {
    userID: interaction.user.id,
    $inc: { denies: 1 },
  }
}

相关问题