2011-04-07 13 views
47

Esto parece una pregunta tonta pero todavía no he encontrado la respuesta. Si simplemente quisiera agregar el mismo campo-> valor a CADA registro en una colección de MongoDB, ¿cuál sería el comando de shell apropiado para hacerlo? He intentado hacer una actualización de múltiples con una consulta en blanco ({}), sino que dio lugar a este error:MongoDB: ¿actualizaciones incondicionales?

múltiples actualización sólo funciona con los operadores $

estoy un poco confundido acerca de cómo solucionar este . ¿Alguna sugerencia?

Respuesta

98

El error lo dice todo: solo puede modificar varios documentos con el $ modifier operators. Probablemente tuvo algo como esto:

> db.coll.update({ }, { a: 'b' }, false, true); 

que normalmente reemplazar el primer objeto de la colección con { a: 'b' }multi si era falso. ¡No querrá reemplazar todos los objetos de su colección con el mismo documento!

Uso del $set operator lugar:

> db.coll.update({ }, { '$set': { a: 'b' } }, false, true); 

Esto establecerá la propiedad a de cada documento (creando si es necesario) para 'b'.

+0

¡Gracias por la ayuda! Ese fue de hecho mi error. –

+1

'$ set' sin cita también funcionará – Jaider

Cuestiones relacionadas