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

aga*_*ian 5 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);
Run Code Online (Sandbox Code Playgroud)

它只更新单个文档.

如何一次更新所有元素?

dcr*_*sta 6

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

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

另外,务必查看C#驱动程序文档以获取有关API的详细信息.