You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB执行$addFields聚合查询成功但未更新文档是什么原因?

问题原因说明

核心原因是MongoDB的aggregate()聚合方法默认是只读操作,仅返回加工后的查询结果,不会修改原集合的持久化数据:

  • 你当前的聚合语句仅配置了$addFields阶段,仅在内存中对返回的查询结果附加了指定字段,没有任何写入原集合的逻辑,因此不会对movies集合的原有数据产生改动。
  • 如果需要把新增字段的结果持久化到原集合,需要在聚合管道末尾新增$merge阶段写入,MongoDB 4.2及以上版本支持该操作,示例代码如下:
db.movies.aggregate([
  {
    $addFields: {
      totalHomework: "123312",
      totalQuiz: "12312"
    }
  },
  {
    $merge: {
      into: "movies",
      on: "_id",
      whenMatched: "replace",
      whenNotMatched: "discard"
    }
  }
])
  • 针对全集合批量新增固定字段的场景,使用updateMany方法效率更高,无需走聚合流程,示例代码如下:
db.movies.updateMany(
  {},
  {
    $set: {
      totalHomework: "123312",
      totalQuiz: "12312"
    }
  }
)

内容的提问来源于stack exchange,提问作者Albus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:36:04