在MongoDB集合中更新所有文档中的一个元素

5

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

以下是代码:

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

它只更新一个文档。

如何一次性更新所有元素?

1个回答

6
默认情况下,MongoDB中的更新仅影响0或1个文档(如果查询指定器未匹配任何内容,则为0)。要更新所有文档,您需要将UpdateFlags.Multi作为第三个参数Update传递。还有一个4个参数的版本的Update,它将“安全模式”标志作为第四个参数进行接受。
(安全模式将getLastError命令与更新捆绑在一起,并导致驱动程序等待服务器确认写入已成功。如果使用复制集,则有各种选项可用于安全模式,这些选项将等待从多个服务器收到确认,然后返回带有错误的结果等待一定时间后返回等)。
此外,请务必查看C#驱动程序文档以获取有关API的详细信息。

正是我所需要的。我缺少了 UpdateFlags.Multi 参数。 - agarcian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接