Mongo - 从Object更新集合的每个文档

时间:2017-07-25 02:14:41

标签: mongodb meteor

在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}});
});

1 个答案:

答案 0 :(得分:0)

默认情况下update操作更新单个文档(适用于Meteor和MongoDB)。要更新所有匹配的文档,您需要将参数multi作为true传递。

根据您的情况,更新看起来非常简单,以下代码段可以正常工作:

Tasks.update({}, {$set: {gridIndex: x}}, {multi: true})

解释:将查询选择器留空以匹配所有文档,然后更新set运算符所需的所需字段,最后将multi作为true传递给make确保所有匹配的文件都将更新。