When using mongoose, there seems to be a limit of more than 1000 documents when using
Potato.collection.insert(potatoBag, onInsert);
You can use:
var bulk = Model.collection.initializeOrderedBulkOp(); async.each(users, function (user, callback) { bulk.insert(hash); }, function (err) { var bulkStart = Date.now(); bulk.execute(function(err, res){ if (err) console.log (" gameResult.js > err " , err); console.log (" gameResult.js > BULK TIME " , Date.now() - bulkStart ); console.log (" gameResult.js > BULK INSERT " , res.nInserted) }); });
But this is almost twice as fast when testing 10,000 documents:
function fastInsert(arrOfResults) { var startTime = Date.now(); var count = 0; var c = Math.round( arrOfResults.length / 990); var fakeArr = []; fakeArr.length = c; var docsSaved = 0 async.each(fakeArr, function (item, callback) { var sliced = arrOfResults.slice(count, count+999); sliced.length) count = count +999; if(sliced.length != 0 ){ GameResultModel.collection.insert(sliced, function (err, docs) { docsSaved += docs.ops.length callback(); }); }else { callback() } }, function (err) { console.log (" gameResult.js > BULK INSERT AMOUNT: ", arrOfResults.length, "docsSaved " , docsSaved, " DIFF TIME:",Date.now() - startTime); }); }
ddennis Aug 2 '15 at 18:37 2015-08-02 18:37
source share