如果该字段的新值不大于另一个字段,我想用Mongoose更新MongoDB数据库中的一个字段。这是我的代码:
python-dotenv
我想做的是仅在'currentQuota'的值小于另一个字段的(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
的值。有没有一种方法可以使用initialQuota
方法执行?还是应该先调用findOneAndUpdate
方法,然后调用find
?
谢谢!
答案 0 :(得分:1)
您可以使用查询对象中的$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 comparing 2 fields
Mongodb文档:https://docs.mongodb.com/manual/reference/operator/query/expr/