我有一個貓鼬模式,上限/最大值為 20
//The maximum amount of users that a user can receive
export const LIKE_LIMIT_CAP = 20
//The amount of likes given every two hours to the user
export const LIKE_LIMIT_INCREASE = 5
@Schema()
export class LikeLimit extends Document {
@Prop({ required: true })
userId: number
@Prop({ required: true, default: 0, max: LIKE_LIMIT_CAP, min: 0 })
likeLimit: number
@Prop({ default: null })
lastLikedDate: Date
}
每 2 小時我有一個 cron 作業,我想將值增加 5,但是,如果值超過 20,它應該簡單地設定為 20。
理想情況下,mongo 查詢應該具有以下邏輯:
if(likeLimit >= LIKE_LIMIT_CAP - LIKE_LIMIT_INCREASE){
likeLimit = LIKE_LIMIT_CAP
}else{
likeLimit = likeLimit LIKE_LIMIT_INCREASE
}
在 Mongoose 中可以進行這種查詢嗎?
uj5u.com熱心網友回復:
您可以使用$cond來執行檢查。
db.collection.update({
userId: <userId>
},
[
{
"$addFields": {
"likeLimit": {
"$cond": {
"if": {
$gt: [
{
"$add": [
"$likeLimit",
<LIKE_LIMIT_INCREASE>
]
},
<LIKE_LIMIT_CAP>
]
},
"then": <LIKE_LIMIT_CAP>,
"else": {
"$add": [
"$likeLimit",
<LIKE_LIMIT_INCREASE>
]
}
}
}
}
}
],
{
multi: true
})
這是Mongo游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/463006.html
下一篇:如何在控制器內呼叫貓鼬模式方法?
