insertMany()
を使用することをお勧めします
最新のMongooseバージョン4.4.X
を使用している場合は、ここでメソッドを実行します 以上。基本的に Model.collection.insertMany()
> =1000
あなたのためのドキュメント。
myData = [Obj1, Obj2, Obj3.......];
Collection1.insertMany(myData, function(error, docs) {});
または、エラー処理を改善するためにPromisesを使用する
Collection1.insertMany(myData)
.then(function(docs) {
// do something with docs
})
.catch(function(err) {
// error handling here
});
これは、一連のドキュメントを作成することで機能し、 .validate()
を呼び出します。 それらを並行して実行し、基になるドライバーの insertMany()
toObject({virtuals:false});
の結果について 各ドキュメントの
事前保存フックをトリガーしません。ドキュメントごとに1回ではなく、サーバーへのラウンドトリップが1回だけであるため、パフォーマンスが向上します。
Mongooseバージョンの場合〜3.8.8、〜3.8.22、4.x
MongoDBサーバーをサポートする>=2.6.x
、 Bulk API
を使用できます
次のように
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
});
}