当字段大于/小于其他字段时,如何使用猫鼬查找和更新

时间:2020-06-21 19:07:10

标签: javascript node.js mongodb mongoose

如果该字段的新值不大于另一个字段,我想用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

谢谢!

1 个答案:

答案 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/