यदि आपका MongoDB सर्वर 2.6 या नया है, तो बेहतर होगा कि आप राइट कमांड का उपयोग करें बल्क एपीआई जो बल्क इंसर्ट<के निष्पादन की अनुमति देता है /ए> ऑपरेशंस जो सर्वर के शीर्ष पर केवल एब्स्ट्रैक्शन हैं, जिससे बल्क ऑपरेशंस बनाना आसान हो जाता है। ये बल्क ऑपरेशन मुख्य रूप से दो फ्लेवर में आते हैं:
- थोक संचालन का आदेश दिया . ये ऑपरेशन सभी ऑपरेशन को क्रम में निष्पादित करते हैं और पहली राइट एरर पर एरर आउट करते हैं।
- अनियंत्रित थोक संचालन . ये ऑपरेशन सभी ऑपरेशनों को समानांतर में निष्पादित करते हैं और सभी त्रुटियों को जोड़ते हैं। अनियंत्रित थोक संचालन निष्पादन के आदेश की गारंटी नहीं देता है।
ध्यान दें, पुराने सर्वरों के लिए 2.6 से अधिक के लिए एपीआई संचालन को कम कर देगा। हालांकि 100% को कम करना संभव नहीं है, इसलिए कुछ किनारे के मामले हो सकते हैं जहां यह सही संख्या की सही रिपोर्ट नहीं कर सकता है।
आपके मामले में, आप बल्क API इस तरह:
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/course", function(err, db) {
// Handle error
if(err) throw err;
// Get the collection and bulk api artefacts
var col = db.collection('students'),
types = ['exam', 'quiz', 'homework', 'homework'],
bulk = col.initializeOrderedBulkOp(), // Initialize the Ordered Batch
counter = 0;
// Drop the collection
col.drop();
// Representing a long loop with 1 Million Records
for (var i = 0; i < 1000000; i++) {
var scores = [],
class_id = 0,
record = {};
// Each student taking 10 classes
for (var class_counter = 0; class_counter < 10; class_counter ++) {
// Each Class has 4 grades
// and each class has 4 grades
for (var j = 0; j < 4; j++) {
scores.push({ 'type': types[j], 'score': Math.random()*100 });
}
// there are 500 different classes that they can take
class_id = Math.floor(Math.random() * 501); // get a class id between 0 and 500
record['student_id'] = i;
record['scores'] = scores;
record['class_id'] = class_id;
}
bulk.insert(record);
counter++;
if (counter % 1000 == 0 ) {
bulk.execute(function(err, result) {
// re-initialise batch operation
bulk = col.initializeOrderedBulkOp();
});
}
}
if (counter % 1000 != 0 ){
bulk.execute(function(err, result) {
// do something with result
db.close();
});
}
});
-- अद्यतन करें-
डमी सामग्री उत्पन्न करने के लिए @MarkusWMahlberg को बधाई, आप पैकेज को आज़माना चाह सकते हैं mgenerateए> ।