【发布时间】:2016-07-19 03:58:17
【问题描述】:
我用 find() 方法调用元素,然后我想更新所有元素。例如:
db.collection.find().limit(10).update({$set: {'column' : 'value'}});
我该如何解决这个问题?
【问题讨论】:
标签: node.js mongodb mongoose nosql
我用 find() 方法调用元素,然后我想更新所有元素。例如:
db.collection.find().limit(10).update({$set: {'column' : 'value'}});
我该如何解决这个问题?
【问题讨论】:
标签: node.js mongodb mongoose nosql
默认情况下,它只更新它找到的第一个文档。您需要添加 multi = true 作为 update() 的选项来更新所有内容。不幸的是,update() 没有限制选项,因此您可以将其限制为 10。
您可能必须先使用 limit 执行 find(),然后像这篇文章中提到的那样分别更新每个文档:
【讨论】:
如果您想对集合中的每个文档应用更新,请使用{multi:true} 选项
db.collection.update({},{$set: {'column' : 'value'}},{multi:true});
更多详情请见collection.update
但是,如果您想更新选定数量的文档,您将需要更长的路线。
db.collection.find().limit(10).forEach(function(o){
o.column = some_value; // replace some_value with real one.
db.collection.update({_id:o._id},o);
});
【讨论】:
find.
find 和 limit 循环光标和 update。