我找到了以下脚本:
Device.find(function(err, devices) {
devices.forEach(function(device) {
device.cid = '';
device.save();
});
});
MongoDB有多个文件更新的“多”标志,但我无法使用mongoose。这还不支持还是我做错了什么?!
Device.update({}, {cid: ''}, false, true, function (err) {
//...
});
目前我相信在猫鼬中的update()
有一些问题,请参阅:https://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg和https://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion。
但是,请查看文档以获取更新:http://mongoosejs.com/docs/api.html(在Model下)。定义是:
早期解决方案(在mongoose 5+版本之后折旧)
Model.update = function (query, doc, options, callback) { ... }
您需要在对象内传递选项,因此您的代码将是:
Model.update = function ({}, {cid: ''}, {multi: true}, function(err) { ... });
新解决方案
Model.updateMany = function (query, doc, callback) { ... }
Model.updateMany = function ({}, {cid: ''}, function(err) { ... });
我相信Mongoose将你的cid包装在$ set中,所以这与在mongo shell中运行相同的更新不同。如果你在shell中运行它,那么所有文档将被一个cid: ''
替换。
您必须使用multi:true选项
Device.update({},{cid: ''},{multi: true});
这些答案已被弃用。这是实际的解决方案:
Device.updateMany({}, { cid: '' });