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