首页 > 解决方案 > 如何使用 1M 记录优化 mongodb 中的 upsert 批量查询

问题描述

我有一个不断下载数据的脚本,我将这些数据保存到 MongoDB 中。每个文档都有一个 Id。如果我收到相同的文件,我只更新一部分。如果 id 是新的,我会添加整个文档。

现在的问题是,当 MongoDB 中没有文档时,它运行顺利,但是当我在 mongo 中有大约 30k 文档时,性能开始下降。


var batch = database_object.collection(channel_basic_data_collection).initializeUnorderedBulkOp({useLegacyOps: true}); 
batch.find(query).upsert().updateOne(update_OPERTATION);

if (count > 1000 ) 
{ 
  batch.execute(function (err, result) {

                    if (err){
                        errorLog(err)
                        operation_started = false
                        return
                    }

                    batch = database_object.collection(channel_basic_data_collection).initializeUnorderedBulkOp({useLegacyOps: true});
});

}

我需要插入 150 万个文档,并且对于每个新文档,我都需要搜索整个集合。

标签: node.jsmongodb

解决方案


在您用于查询的字段中创建索引。


推荐阅读