2011-12-25 100 views
5

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

下面是代码:

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

它只更新一个文件。

如何一次更新全部元素?

回答

6

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

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

有关API的详细信息,请务必登录see the C# driver documentation

+0

正是我需要的。我错过了'UpdateFlags.Multi'参数。 – agarcian 2011-12-26 00:38:55

相关问题