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

时间:2011-12-25 22:51:39

标签: mongodb mongodb-.net-driver

我正在运行以下查询,目的是更新集合中所有现有文档中的单个元素。我基本上试图将它们的值清除为“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 个答案:

答案 0 :(得分:6)

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

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

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