mongodb update 如何在mongoose中更新多个文档




nodejs mongodb (2)

我找到了以下脚本:

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/G8i9S7E8Erghttps://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erghttps://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion

但是,请查看文档以获取更新: http://mongoosejs.com/docs/api.htmlhttp://mongoosejs.com/docs/api.html (在模型下)。 定义是:

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

您需要在对象内传递选项,因此您的代码将是:

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

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


您必须使用multi:true选项

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




mongoose