2011-12-25 12 views
5

Estoy ejecutando la siguiente consulta con el fin de actualizar un solo elemento en todos los documentos existentes en la colección. Básicamente estoy tratando de borrar su valor a "0".Actualizar un elemento en todos los documentos en una colección de MongoDB

Aquí está el código:

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

Sólo actualiza un documento único.

¿Cómo puedo actualizar todos los elementos a la vez?

Respuesta

6

Las actualizaciones en MongoDB afectan 0 o 1 documentos por defecto (0 solo si el especificador de consulta no coincide con nada). Para actualizar todos los documentos, debe pasar UpdateFlags.Multi como tercer argumento Update. También hay una versión de 4 argumentos de Update que acepta el indicador "modo seguro" como el cuarto argumento.

(Modo a prueba de errores incluye un comando getLastError con la actualización y hace que el controlador espere hasta que el servidor reconozca que la escritura ha tenido éxito. Hay varias opciones de modo seguro que esperarán confirmación de varios servidores si está utilizando un conjunto de réplicas, que esperará solo durante un cierto período de tiempo y luego regresará con un error, etc.).

También asegúrese de see the C# driver documentation para obtener detalles sobre la API.

+0

Exactamente lo que necesitaba. Me faltaba el argumento 'UpdateFlags.Multi'. – agarcian

Cuestiones relacionadas