Node.js 如何更新mongoose模型嵌套数组中的数字

Node.js 如何更新mongoose模型嵌套数组中的数字,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,有人能解释一下我做错了什么吗。我试图通过添加两个数字来更新mongoose模式中嵌套数组中的数值 这是有问题的部分 $set: { "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock) } req.existing shares为100,req.stock为字符串格式,但等于100,因此简言之,共享的新值应为200 但当我运行代码时,上述股东的股份不会发生变化,而是保持原值 下面是完整的片段

有人能解释一下我做错了什么吗。我试图通过添加两个数字来更新mongoose模式中嵌套数组中的数值

这是有问题的部分

  $set: {
    "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
  }
req.existing shares为100,req.stock为字符串格式,但等于100,因此简言之,共享的新值应为200

但当我运行代码时,上述股东的股份不会发生变化,而是保持原值

下面是完整的片段

module.exports.updateShareHolder = function(req, callback) {

console.log('updateShareHolder');
console.log(req);
console.log(req.existingStock + Number(req.stock));

  Company.update({
      "_id": req.companyID,
      "shareHolders.userId": req.userID
    }, {
      $push: {
        "shareHolders.$.agreements": {
          agreementID: req.agreementID
        }
      }
    }, {
       $set: {
      "shareHolders.$.shares": Number(req.existingStock) + Number(req.stock)
  }
    }, function(err) {

          if (err) {
            console.log(err);
            callback(err, err);
          } else {
            console.log('updateShareHolder');
            callback(null, 'success');
          }


    })


};

在执行
更新之前,请先转换为数字

    const updatedStock = Number(req.existingStock) + Number(req.stock)
然后

     $set: {
      "shareHolders.$.shares": updatedStock
  }