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