繁体   English   中英

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

[英]How can I use findOneAndUpdate() in Mongoose, and keep a value the same?

我正在制作一个系统,如果 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 中已有的不变。

尝试将您的更新查询更改为此

{ $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 },
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM