J'ai trouvé le script suivant:
Device.find(function(err, devices) {
devices.forEach(function(device) {
device.cid = '';
device.save();
});
});
MongoDB a le drapeau "multi" pour une mise à jour sur plusieurs documents mais je n'ai pas pu faire fonctionner cela avec la mangouste. N'est-ce pas encore pris en charge ou est-ce que je fais quelque chose de mal?!
Device.update({}, {cid: ''}, false, true, function (err) {
//...
});
Actuellement, je crois que update()
dans Mongoose a quelques problèmes, voir: https://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg et - https://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion .
Cependant, vérifiez les documents pour la mise à jour: http://mongoosejs.com/docs/api.html (son sous Modèle). La définition est:
Solution antérieure (dépréciée après la version mangouste 5+)
Model.update = function (query, doc, options, callback) { ... }
Vous devez passer les options à l'intérieur d'un objet, donc votre code serait:
Model.update = function ({}, {cid: ''}, {multi: true}, function(err) { ... });
Nouvelle solution
Model.updateMany = function (query, doc, callback) { ... }
Model.updateMany = function ({}, {cid: ''}, function(err) { ... });
Je crois que Mongoose enveloppe votre cid dans un ensemble $, donc ce n'est pas la même chose que d'exécuter cette même mise à jour dans le shell mongo. Si vous l'exécutiez dans le Shell, tous les documents seraient remplacés par un par un seul cid: ''
.
Vous devez utiliser l'option multi: true
Device.update({},{cid: ''},{multi: true});
Ces réponses sont obsolètes. C'est la vraie solution:
Device.updateMany({}, { cid: '' });