在mongoDB中不使用$ push的情况下更新数组

时间:2019-02-14 13:55:33

标签: arrays node.js database mongodb mongodb-query

this._MyModel.findOneAndUpdate(
    { email },
    {
      $set: {
        'tradeAccount': {
          limitType,
          limit,
        }
      },
      $push: {
        'tradeAccount.history': history
      }
    }
  );

我想使用$push将另一个对象添加到现有数组中,但是与此同时,我正在使用$set对同一对象执行另一个更新。

我知道我不能在同一字段(例如{$set$push)上使用两个运算符。

我想知道是否存在使用$set将另一个对象添加到现有数组中的另一种方法,或者在同一更新请求中是否还有其他方法可以这样做。

我当时正在考虑通过检索现有历史记录并与新记录合并来使用$set更新数组。但这需要对数据库的额外调用。

1 个答案:

答案 0 :(得分:1)

您可以使用

this._MyModel.findOneAndUpdate(
  { email },
  {
    $set: {
      'tradeAccount'.'limitType': limitType,
      'tradeAccount'.'limit': limit
    },
    $push: {
      'tradeAccount.history': history
    }
  }
);

这应该更新limitType和limit字段,然后推入历史记录。您不会以这种方式在同一字段上执行多个查询,因为您没有直接对'tradeAccount'做任何事情。