我正在运行以下查询,目的是更新集合中所有现有文档中的单个元素。我基本上试图将它们的值清除为“0”。
以下是代码:
MongoCollection collection = db.GetCollection(DataAccessConfiguration.Settings.CollectionName);
var query = Query.Exists("ElementName", true);
var update = Update.Set("ElementName", "0");
collection.Update(query, update);
它只更新单个文档。
如何一次更新所有元素?
答案 0 :(得分:6)
默认情况下,MongoDB中的更新会影响0或1个文档(仅当查询说明符与任何内容不匹配时才为0)。要更新所有文档,您需要将UpdateFlags.Multi
作为第三个参数Update
传递。还有一个4参数版本的Update
,它接受“安全模式”标志作为第四个参数。
(安全模式将getLastError
命令与更新捆绑在一起,并使驱动程序等待,直到服务器确认写入成功。安全模式有多种选项,等待来自多个服务器的确认,如果您正在使用副本集,它将仅等待一段时间,然后返回并出现错误等。)
另请务必see the C# driver documentation了解有关API的详细信息。