最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin6浏览0评论

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

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

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

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

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

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

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

回答如下:

您可以使用

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

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

发布评论

评论列表(0)

  1. 暂无评论