Misschien wilt u de insertMany()
gebruiken
methode hier als u de nieuwste Mongoose-versie 4.4.X
gebruikt en hoger, die in wezen Model.collection.insertMany()
onder de motorkap en de bestuurder kan parallelliseren >=1000
documenten voor u.
myData = [Obj1, Obj2, Obj3.......];
Collection1.insertMany(myData, function(error, docs) {});
of Promises gebruiken voor een betere foutafhandeling
Collection1.insertMany(myData)
.then(function(docs) {
// do something with docs
})
.catch(function(err) {
// error handling here
});
Het werkt door een heleboel documenten te maken, roept .validate()
. aan op hen in parallel, en roept vervolgens de onderliggende driver's insertMany()
op het resultaat van toObject({ virtuals:false });
van elk document. Hoewel insertMany()
activeert geen pre-save hooks, het heeft betere prestaties omdat het slechts 1 retour naar de server maakt in plaats van 1 voor elk document.
Voor Mongoose-versies ~3.8.8, ~3.8.22, 4.x
die MongoDB Server >=2.6.x
ondersteunen , kunt u de Bulk API
gebruiken
als volgt
var bulk = Collection1.collection.initializeOrderedBulkOp(),
counter = 0;
myData.forEach(function(doc) {
bulk.insert(doc);
counter++;
if (counter % 500 == 0) {
bulk.execute(function(err, r) {
// do something with the result
bulk = Collection1.collection.initializeOrderedBulkOp();
counter = 0;
});
}
});
// Catch any docs in the queue under or over the 500's
if (counter > 0) {
bulk.execute(function(err,result) {
// do something with the result here
});
}