pky*_*eck 49 mongoose mongodb node.js
我找到了以下脚本:
Device.find(function(err, devices) {
devices.forEach(function(device) {
device.cid = '';
device.save();
});
});
Run Code Online (Sandbox Code Playgroud)
MongoDB有多个文件更新的"多"标志,但我无法使用mongoose.这还不支持还是我做错了什么?!
Device.update({}, {cid: ''}, false, true, function (err) {
//...
});
Run Code Online (Sandbox Code Playgroud)
kcb*_*ner 77
目前我认为update()在Mongoose有一些问题,请参阅: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(在模型下).定义是:
早期解决方案(在mongoose 5+版本之后折旧)
Model.update = function (query, doc, options, callback) { ... }
Run Code Online (Sandbox Code Playgroud)
您需要在对象内传递选项,因此您的代码将是:
Model.update = function ({}, {cid: ''}, {multi: true}, function(err) { ... });
Run Code Online (Sandbox Code Playgroud)
新解决方案
Model.updateMany = function (query, doc, callback) { ... }
Model.updateMany = function ({}, {cid: ''}, function(err) { ... });
Run Code Online (Sandbox Code Playgroud)
我相信Mongoose将你的cid包装在$ set中,所以这与在mongo shell中运行相同的更新不同.如果你在shell中运行它,那么所有文档将被替换为一个文档cid: ''.
Rif*_*een 17
您必须使用multi:true选项
Device.update({},{cid: ''},{multi: true});
Run Code Online (Sandbox Code Playgroud)
Ser*_*nci 14
这些答案已被弃用.这是实际的解决方案:
Device.updateMany({}, { cid: '' });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75147 次 |
| 最近记录: |