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

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


提前致谢!


慕盖茨4494581
浏览 78回答 1
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 comparison 2 fieldsMongodb 文档:https ://docs.mongodb.com/manual/reference/operator/query/expr/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript