【问题标题】:Increment value of a property inside mongodb document using mongoose使用 mongoose 增加 mongodb 文档中的属性值
【发布时间】:2021-07-19 10:41:35
【问题描述】:

所以我有这个称为“项目”的对象数组:

对于每个对象,我想使用基础文档中的“baseId”在 mongodb 中找到相同的对象,然后将“jumlahTerjual”数量更新 +1,这是“基础文档”:

我已经尝试过这种方法,但得到一个名为“jumlahTerjual 未定义”的错误:

如何正确使用 findByIdAndUpdate 对其进行更新?任何答案将不胜感激。

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    假设基础文档中的每个对象都存在 jumlahTerjual 键, 当您想增加它(通过任何自定义值)时,请尝试:

    items.map(item => {
      return Base.findByIdAndUpdate(item.baseId, {$inc: { jumlahTerjual: 1 }}, function(error, counter) {
        if(error)
          return next(error);
        doc.testvalue = counter.seq;
        next();
      })
    })
    

    使用$inc 运算符而不是{ jumlahTerjual: jumlahTerjual + 1 } 作为更新对象。因为,当前解释器试图找到一个名为jumlahTerjual 的局部变量,该变量递增 1 并分配给 mongoose 找到的对象中的键。因为我们还没有为 jumlahTerjual 定义局部变量,所以会出现未定义错误。

    因为您只想递增,而不是使用新值更改 mongoDB 记录中的值,只需使用 $inc 运算符即可。

    【讨论】:

    • @adityo-fauzaan 如果有用,请接受并投票。
    • 是的,这个答案正是我要找的!非常感谢
    • @adityo-fauzaan 很高兴它解决了您的问题。如果您想编辑您的问题并添加更具体的标题,例如:“在猫鼬中使用 findByIdAndUpdate 增加键值”或类似的内容。这将帮助许多有相同问题的其他人找到问题并更好地回答。
    猜你喜欢
    • 2012-01-27
    • 2018-05-23
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多