我如何更新mongoose中的多个文件

我发现了下面的脚本:

Device.find(function(err, devices) { devices.forEach(function(device) { device.cid = ''; device.save(); }); }); 

MongoDB的“多”标志为多个文件的更新,但我不能得到这与mongoose工作。 这还不支持,或者我做错了什么?

 Device.update({}, {cid: ''}, false, true, function (err) { //... }); 

目前我相信Mongoose中的update()有一些问题,请参阅: https : //groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg和https://groups.google.com/d/topic / mongoose-orm / K5pSHT4hJ_A /讨论 。

但是,请检查文档以进行更新: http : //mongoosejs.com/docs/api.html (其在Model下)。 定义是:

 Model.update = function (query, doc, options, callback) { ... } 

你需要传递一个对象的选项,所以你的代码是:

 Model.update = function ({}, {cid: ''}, {multi: true}, function(err) { ... }); 

我相信Mongoose将你的cid包装在一个$集合中,所以这与在mongo shell中运行相同的更新是不一样的。 如果你在shell中运行它,那么所有的文档将被一个单一的cid: ''replacecid: ''

你必须使用multi:true选项

 Device.update({},{cid: ''},{multi: true});