如果该字段的新值不会大于另一个字段,我想用 Mongoose 更新我的 MongoDB 数据库中的字段。这是我的代码:Training.findOneAndUpdate( { date: dateStringForDB, startHour: retrievedRequest.body.trainingStartHour }, { $push: { participants: retrievedRequest.session.loggedInPhoneNumber }, $inc: { currentQuota: +1 } }, (err, doc, updateResponse) => { if (err) { console.log("Error while updating training ", err); return; } retrievedResponse.redirect("/schedule"); } );我想要做的是currentQuota仅在 'currentQuota' 的值小于另一个字段的 ( initialQuota) 值时才增加 的值。有没有办法用方法来做到这一点,findOneAndUpdate还是我应该先调用find方法然后再调用update?提前致谢!
1 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
$expr您可以使用查询对象比较同一文档中的两个字段。
Training.findOneAndUpdate(
{ date: dateStringForDB, startHour: retrievedRequest.body.trainingStartHour, $expr: { $gt:["$initialQuota", "$currentQuota"] } },
{ $push: { participants: retrievedRequest.session.loggedInPhoneNumber }, $inc: { currentQuota: +1 } },
(err, doc, updateResponse) => {
if (err) {
console.log("Error while updating training ", err);
return;
}
retrievedResponse.redirect("/schedule");
}
);
有关更多信息,请参阅此内容: MongoDb query condition on comparison 2 fields
Mongodb 文档:https ://docs.mongodb.com/manual/reference/operator/query/expr/
添加回答
举报
0/150
提交
取消