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

时间:2015-02-19 08:49:50

标签: performance mongodb performance-testing bulkinsert database-performance

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

  1. 将一系列文档传递到db.collection.insert
  2. 使用Bulk.insert - 自v2.6起可用
  3. 哪一个更高效?我假设后者在单个批量写入操作块中与其他写入操作结合使用时非常方便,因此第一个更高效。但是,有没有人做过任何测试,或者有相关的逻辑或经验证据?

1 个答案:

答案 0 :(得分:5)

在mongo shell提示符下,键入

db.test.insert

您将看到此功能的代码。如果您阅读它,您会看到将数组传递给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();
}

此代码来自2.6.7 mongo shell。