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

मोंगो बल्क एकल क्वेरी में मिलान किए गए दस्तावेज़ फ़ील्ड को ढूंढें और अपडेट करें?

बेहतर प्रदर्शन के लिए, Bulk() . का उपयोग करने का लाभ उठाएं थोक में संग्रह को कुशलतापूर्वक अद्यतन करने के लिए एपीआई क्योंकि आप बैचों में सर्वर को संचालन भेजेंगे (उदाहरण के लिए, 500 का बैच आकार कहें)। यह आपको बहुत बेहतर प्रदर्शन देता है क्योंकि आप सर्वर को प्रत्येक अनुरोध नहीं भेजेंगे बल्कि प्रत्येक 500 अनुरोधों में से केवल एक बार भेजेंगे, इस प्रकार आपके अपडेट अधिक कुशल और तेज़ हो जाएंगे।

निम्नलिखित इस दृष्टिकोण को प्रदर्शित करता है, पहला उदाहरण Bulk() का उपयोग करता है एपीआई MongoDB संस्करणों>=2.6 और <3.2 में उपलब्ध है। यह किसी दिए गए सरणी से संग्रह में सभी मिलान किए गए दस्तावेज़ों को दिखाए गए फ़ील्ड में 1 बढ़ाकर अपडेट करता है। यह मानता है कि छवियों की सरणी में संरचना होती है

var images = [
    { "_id": 1, "name": "img_1.png" },
    { "_id": 2, "name": "img_2.png" }
    { "_id": 3, "name": "img_3.png" },
    ...
    { "_id": n, "name": "img_n.png" }
]

MongoDB संस्करण>=2.6 और <3.2 :

var bulk = db.images.initializeUnorderedBulkOp(),
    counter = 0;

images.forEach(function (doc) {    
    bulk.find({ "_id": doc._id }).updateOne({ 
        "$inc": { "shown": 1 }
    });

    counter++;
    if (counter % 500 === 0) {
        // Execute per 500 operations
        bulk.execute(); 
        // re-initialize every 500 update statements
        bulk = db.images.initializeUnorderedBulkOp();
    }
})
// Clean up remaining queue
if (counter % 500 !== 0) { bulk.execute(); }

अगला उदाहरण नए MongoDB संस्करण 3.2 पर लागू होता है, जिसने तब से Bulk() को हटा दिया है। एपीआई और bulkWrite() . का उपयोग करके एपीआई का एक नया सेट प्रदान किया

MongoDB संस्करण 3.2 और उच्चतर :

var ops = [];
images.forEach(function(doc) {
    ops.push({
        "updateOne": {
            "filter": { "_id": doc._id },
            "update": {
                "$inc": { "shown": 1 }
            }
        }
    });

    if (ops.length === 500 ) {
        db.images.bulkWrite(ops);
        ops = [];
    }
})

if (ops.length > 0)  
    db.images.bulkWrite(ops);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी सुरक्षा के तीन ए - प्रमाणीकरण, प्राधिकरण और लेखा परीक्षा

  2. स्प्रिंग बूट मैसकल और मोंगोडीबी को जोड़ता है

  3. MongoDB में JavaScript NoSQL इंजेक्शन की रोकथाम

  4. रेल में Mongoid Group By या MongoDb group by

  5. MongoDB प्रदर्शन:सेकंडरी पर MongoDB एकत्रीकरण चलाना