mongodb - valor - ¿Cómo puedo actualizar varios documentos en mangosta
update item mongodb (2)
Encontré el siguiente script:
Device.find(function(err, devices) {
devices.forEach(function(device) {
device.cid = '''';
device.save();
});
});
MongoDB tiene la bandera "multi" para una actualización de varios documentos, pero no pude hacer que esto funcionara con mangosta. ¿Esto todavía no es compatible o estoy haciendo algo mal?
Device.update({}, {cid: ''''}, false, true, function (err) {
//...
});
Actualmente, creo que la update()
en Mongoose tiene algunos problemas, mira: https://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg y https://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion .
Sin embargo, verifique los documentos para la actualización: http://mongoosejs.com/docs/api.html (en Modelo). La definición es:
Model.update = function (query, doc, options, callback) { ... }
Debes pasar las opciones dentro de un objeto, para que tu código sea:
Model.update = function ({}, {cid: ''''}, {multi: true}, function(err) { ... });
Creo que Mongoose envuelve tu cid en $ set, por lo que no es lo mismo que ejecutar esa misma actualización en el shell mongo. Si ejecutó eso en el shell, todos los documentos serían reemplazados por uno con un solo cid: ''''
.
Tienes que usar la opción multi: true
Device.update({},{cid: ''''},{multi: true});