Arrays 在mongoDB中不使用$push更新阵列

Arrays 在mongoDB中不使用$push更新阵列,arrays,node.js,database,mongodb,mongodb-query,Arrays,Node.js,Database,Mongodb,Mongodb Query,我想使用$push将另一个对象添加到现有数组中,但同时我正在使用$set对同一对象执行另一次更新 我知道我不能在同一字段上使用两个运算符,例如($set和$push) 我想知道是否有其他方法可以使用$set将另一个对象添加到现有数组中,或者是否有其他方法可以在相同的更新请求中执行此操作 我正在考虑使用$set通过检索现有历史记录并与新历史记录连接来更新数组。但这需要额外调用数据库。您可以使用 this._MyModel.findOneAndUpdate( { email }, {

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

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

我想知道是否有其他方法可以使用
$set
将另一个对象添加到现有数组中,或者是否有其他方法可以在相同的更新请求中执行此操作

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

您可以使用

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

这将更新limitType和limit字段,然后进入历史记录。您没有以这种方式对同一字段执行多个查询,因为您没有直接对“tradeAccount”执行任何操作。

似乎值得尝试。我已经将历史更新与用户更新分开,因为我认为这种方法非常符合
S
OLID原则。非常感谢。
this._MyModel.findOneAndUpdate(
  { email },
  {
    $set: {
      'tradeAccount'.'limitType': limitType,
      'tradeAccount'.'limit': limit
    },
    $push: {
      'tradeAccount.history': history
    }
  }
);