[英]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.