在Meteor服务器端方法中,我使用 key=_id
& value=number
注入一个 globalPositions
对象来更新 Tasks
集合的所有文档 .
globalPositions // {id1: x, id2: y, id3: z…}
如何在集合的每个文档上一次性更新这样的更新
Tasks.update({_id: id1}, {$set: {gridIndex: x}});
EDIT
我找到了一种方法,但他的速度和聪明才智呢?对象可能很大..
Object.keys(globalPositions).map(function(key, index) {
var value = globalPositions[key];
Tasks.update({_id: key}, {$set: {gridIndex: value}});
});
1 回答
默认情况下
update
操作更新单个文档(适用于Meteor和MongoDB) . 要更新所有匹配的文档,您需要将参数multi
作为true
传递 .根据您的情况,更新看起来非常简单,以下代码段应该可以正常工作:
Explanation :将查询选择器留空以匹配所有文档,然后通过
set
运算符更新所需的字段,最后将multi
作为true
传递,以确保所有匹配的文档都将更新 .