在MongoDB中批量插入的最佳方式

day*_*oli 2 performance bulkinsert performance-testing mongodb database-performance

在MongoDB中批量插入文档有两种方法:

  1. 传入一系列文档db.collection.insert,或
  2. 使用Bulk.insert- 自v2.6起可用

哪一个更高效?我假设后者在单个批量写操作块中与其他写操作结合使用时更方便,因此第一个更高效.但有没有人做过任何测试或有这方面的逻辑或经验证据?

wdb*_*ley 5

在mongo shell提示符下,键入

db.test.insert
Run Code Online (Sandbox Code Playgroud)

您将看到此功能的代码.如果你阅读它,你会发现传入一个数组insert并进行批量插入是一回事.您需要查看整个代码,这些代码太长而无法在此处发布,以确切了解发生了什么,但关键部分是

var isMultiInsert = Array.isArray(obj);

if (isMultiInsert) {
    obj.forEach(function(doc) {
        bulk.insert(doc);
    });
}
else {
    bulk.insert(obj);
}

try {
    result = bulk.execute(wc);
    if (!isMultiInsert)
        result = result.toSingleResult();
}
Run Code Online (Sandbox Code Playgroud)

此代码来自2.6.7 mongo shell.