Performance 在MongoDB中插入Milti。哪种方式更有效? //第一种方法 对于(变量i=0;i

Performance 在MongoDB中插入Milti。哪种方式更有效? //第一种方法 对于(变量i=0;i,performance,mongodb,Performance,Mongodb,哪种方式更有效?第二种方法是否只向数据库发出一个请求?对于大量插入,第二种方法肯定要快得多。这是因为您将只进行一次db调用 但亲自测试并不难 // first approach for (var i = 0; i < 1000000; i++) { db.testdata.insert({number: i}); } // second approach for (var i = 0, arr = []; i < 1000000; i++) { arr.push({numb

哪种方式更有效?第二种方法是否只向数据库发出一个请求?

对于大量插入,第二种方法肯定要快得多。这是因为您将只进行一次db调用

但亲自测试并不难

// first approach
for (var i = 0; i < 1000000; i++) {
  db.testdata.insert({number: i});
}

// second approach
for (var i = 0, arr = []; i < 1000000; i++) {
  arr.push({number: i});
}
db.testdata.insert(arr);
var X=100000;
var start=新日期();
对于(变量i=0;i
第二个呢

var X = 100000;
var start = new Date();
for (var i = 0; i < X; i++) {
  db.coll1.insert({number: i});
}
var time1 = new Date() - start;
var start=newdate();
对于(var i=0,arr=[];i
正如评论中所建议的,您可以尝试插入(在我看来,插入与2的操作相同,但我可能错了):

var start=newdate();
var bulk=db.coll3.initializeUnderedBulkop();
对于(变量i=0;i
下面是我的机器
time1=33846
time2=2191
time3=2203
的结果


正如你所看到的,2和3之间的差异可以忽略不计,但是1几乎是15倍长(如果你增加X,它会大得多)。如果我是你,我会使用有文档的批量插入。

底层应该更好,它使用更少的查询。这看起来像是一个测试查询,我认为您应该使用“第二种方法”,无论是哪种方法,您都应该使用bulkinset API:方法2和3似乎已经在以后的MongoDB版本中统一了。以前的方法2用于批量插入,这是一个落后于BulkInsert的遗留API,但现在似乎已经被抛弃了
var start = new Date();
for (var i = 0, arr = []; i < X; i++) {
  arr.push({number: i});
}
db.coll2.insert(arr);
var time2 = new Date() - start;
var start = new Date();
var bulk = db.coll3.initializeUnorderedBulkOp();
for (var i = 0; i < X; i++) {
    bulk.insert({number: i});
}
bulk.execute();
var time3 = new Date() - start;