MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongoskin के साथ अनियंत्रित बल्क इंसर्टिंग का उपयोग कैसे करें?

आप इसे कर सकते हैं लेकिन ऐसा करने के लिए आपको अपने कॉलिंग सम्मेलनों को बदलने की जरूरत है क्योंकि केवल "कॉलबैक" फॉर्म वास्तव में एक संग्रह ऑब्जेक्ट लौटाएगा जिसमें से .initializeUnorderedBulkOp() विधि कहा जा सकता है। आपके विचार से यह कैसे काम करता है, इसके उपयोग में कुछ अंतर भी हैं:

var dbURI = urigoeshere;
var db = mongo.db(dbURI, {safe:true});
db.collection('collection',function(err,collection) {
    var bulk = collection.initializeUnorderedBulkOp();
    count = 0;

    for (var i = 0; i < 200000; i++) {
        bulk.insert({number: i});
        count++;

        if ( count % 1000 == 0 )
            bulk.execute(function(err,result) {
               // maybe do something with results
               bulk = collection.initializeUnorderedBulkOp(); // reset after execute
            });      

    });

    // If your loop was not a round divisor of 1000
    if ( count % 1000 != 0 )
        bulk.execute(function(err,result) {
          // maybe do something here
        });
});

तो वास्तविक "थोक" विधियों को स्वयं कॉलबैक की आवश्यकता नहीं होती है और दस्तावेज़ीकरण में दिखाए गए अनुसार ठीक से काम करते हैं। अपवाद है .execute() जो वास्तव में सर्वर को स्टेटमेंट भेजता है।

जबकि ड्राइवर आपके लिए इसे कुछ हद तक सुलझाएगा, निष्पादन को कॉल करने से पहले बहुत सारे संचालन को कतारबद्ध करना शायद एक अच्छा विचार नहीं है। यह मूल रूप से मेमोरी में बनता है, और हालांकि ड्राइवर एक बार में केवल 1000 के बैच में भेजेगा (यह एक सर्वर सीमा है और साथ ही पूरा बैच 16 एमबी से कम है), आप शायद यहां थोड़ा और नियंत्रण चाहते हैं, कम से कम स्मृति उपयोग सीमित करें।

जैसा कि दिखाया गया है, मॉड्यूलो परीक्षणों का यही बिंदु है, लेकिन यदि संचालन के निर्माण के लिए स्मृति और संभावित रूप से वास्तव में बड़ी प्रतिक्रिया वस्तु आपके लिए कोई समस्या नहीं है तो आप केवल संचालन को कतारबद्ध कर सकते हैं और कॉल कर सकते हैं .execute() कोड> एक बार।

"प्रतिक्रिया" उसी प्रारूप में है जैसा कि BulkWriteResult के दस्तावेज़ीकरण में दिया गया है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ISODate के लिए --query के साथ mongoexport का उपयोग करें

  2. MongoDB और Nodejs के साथ दिनांक सम्मिलित करना और क्वेरी करना

  3. स्वचालित डेटाबेस स्वास्थ्य जांच

  4. मोंगोडब क्लाइंट को स्थानीय उल्का मोंगोडीबी से कैसे कनेक्ट करें

  5. क्या MongoDB में हाल ही में हटाए गए दस्तावेज़ों को पुनर्प्राप्त करने का कोई तरीका है?