我如何更新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});