【问题标题】:Updating an element in all documents in a MongoDB collection更新 MongoDB 集合中所有文档中的元素
【发布时间】:2025-11-28 16:15:01
【问题描述】:

我正在运行以下查询,目的是更新集合中所有现有文档中的单个元素。我基本上是在尝试将它们的值清除为“0”。

代码如下:

MongoCollection collection = db.GetCollection(DataAccessConfiguration.Settings.CollectionName);
var query = Query.Exists("ElementName", true);
var update = Update.Set("ElementName", "0");
collection.Update(query, update);

它只更新一个文档。

如何一次更新所有元素?

【问题讨论】:

    标签: mongodb mongodb-.net-driver


    【解决方案1】:

    默认情况下,MongoDB 中的更新影响 0 或 1 个文档(仅当查询说明符不匹配任何内容时为 0)。要更新所有文档,您需要传递UpdateFlags.Multi 作为第三个参数UpdateUpdate 还有一个 4 参数版本,它接受“安全模式”标志作为第四个参数。

    (安全模式将getLastError 命令与更新捆绑在一起,并导致驱动程序等待,直到服务器确认写入已成功。安全模式有多种选项,如果您正在等待来自多个服务器的确认使用副本集,它只会等待一段时间,然后返回错误等)。

    也请务必see the C# driver documentation 了解有关 API 的详细信息。

    【讨论】:

    • 正是我需要的。我错过了UpdateFlags.Multi 参数。