【问题标题】:MongoDB, Mongoose and Node.js update streamMongoDB、Mongoose 和 Node.js 更新流
【发布时间】:2016-05-20 21:06:12
【问题描述】:

我在 MongoDB 中有一个大集合:size - 94.605.081.327 B count - 54.738.234。我必须更改此集合中的所有文档,并且无法在单个 update 中完成。

我想流式传输数据并一次更新一个文档的集合。同一项目的另一位开发人员推荐了这样的方法:

stream.on('data', (data)=>{
    stream.pause();
    data.field = 'newValue'; // update
    data.save((err)=>{
        stream.resume();
    })
})

这是个好主意吗? updateNode.jsMongoose 是否有更有效的方法?

【问题讨论】:

  • 您可以批量读取数据,批量更新每个条目,然后将批量写回。 MongoDB 提供 skiplimit 仅加载结果集的一部分。

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

您可以使用 bulk operation。查看MongoDB documentation 了解详细信息。如果您需要涉及mongoose,您的代码将如下所示:

var bulk = Items.collection.initializeOrderedBulkOp();
bulk.find(query).update(update);
bulk.execute(function(error) {
     callback();                   
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 2011-10-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2017-09-22
    • 2014-03-20
    • 2012-01-09
    相关资源
    最近更新 更多