首页 文章

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

提问于
浏览
0

在Meteor服务器端方法中,我使用 key=_idvalue=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 回答

  • 0

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

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

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

    Explanation :将查询选择器留空以匹配所有文档,然后通过 set 运算符更新所需的字段,最后将 multi 作为 true 传递,以确保所有匹配的文档都将更新 .

相关问题