Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में bulkWrite का उपयोग करके एकाधिक दस्तावेज़ कैसे जोड़ें?

MongoDB में bulkWrite() का उपयोग करके एक ही ऑपरेशन में कई लिखने के ऑपरेशन (इन्सर्ट, अपडेट, अपसर्ट, डिलीट) कुशलतापूर्वक निष्पादित करें। यह नेटवर्क राउंड-ट्रिप को कम करता है और परमाणु बैच प्रसंस्करण की अनुमति देता है।

उदाहरण: अपसर्ट ऑपरेशन की सरणी तैयार करें

> const arrayList = [
    { "Value1": 100, "Value2": 200, "Name": "John" },
    { "Value1": 100, "Value2": 200, "Name": "Bob" }
];
> let op1 = [];
> arrayList.forEach(({ Value1, Value2, Name }) => {
    op1.push({
        "updateOne": {
            "filter": { Name },
            "update": { "$set": { Value1, Value2, Name } },
            "upsert": true
        }
    });
});

bulkWrite निष्पादित करें

> db.demo397.bulkWrite(op1);
{
    "acknowledged" : true,
    "deletedCount" : 0,
    "insertedCount" : 0,
    "matchedCount" : 0,
    "upsertedCount" : 2,
    "insertedIds" : { },
    "upsertedIds" : {
        "0" : ObjectId("5e5e8c07f995e1718151981c"),
        "1" : ObjectId("5e5e8c07f995e1718151981d")
    }
}

परिणाम जांचें

> db.demo397.find();

आउटपुट:

{ "_id" : ObjectId("5e5e8c07f995e1718151981c"), "Name" : "John", "Value1" : 100, "Value2" : 200 }
{ "_id" : ObjectId("5e5e8c07f995e1718151981d"), "Name" : "Bob", "Value1" : 100, "Value2" : 200 }

व्याख्या

  • arrayList स्रोत डेटा रखता है।
  • forEach प्रत्येक आइटम के लिए updateOne ऑपरेशन बनाता है upsert: true के साथ (मौजूद होने पर अपडेट करता है, अन्यथा डालता है)।
  • bulkWrite(op1) सभी ऑपरेशन को एक बैच में भेजता है।
  • परिणाम upsertedCount: 2 और नए _id मान दिखाता है।

bulkWrite ऑपरेशन प्रकार

ऑपरेशनउद्देश्य
insertOneएकल दस्तावेज़ डालें
updateOneपहला मिलान अपडेट करें
updateManyसभी मिलान अपडेट करें
deleteOneपहला मिलान हटाएं
deleteManyसभी मिलान हटाएं
replaceOneपहला मिलान बदलें

विकल्प

  • ordered: true (डिफ़ॉल्ट) — क्रम में निष्पादित करता है, पहली त्रुटि पर रुकता है।
  • ordered: false — अनऑर्डर्ड, समानांतर निष्पादन, जारी रहता है त्रुटियों के बाद।
  • bypassDocumentValidation: true — स्कीमा वैलिडेशन छोड़ें।

सर्वोत्तम अभ्यास

  • बैच आकार: प्रति बैच 1000-5000 ऑपरेशन (16MB BSON लिमिट)।
  • बेहतर थ्रूपुट के लिए ordered: false का उपयोग करें जब क्रम मायने नहीं रखता।
  • त्रुटियों को परिणाम में writeErrors के माध्यम से संभालें।
  1. - MongoDB में एम्बेडेड दस्तावेजों को क्वेरी करें

    MongoDB में एम्बेडेड दस्तावेजों को क्वेरी करने के लिए, aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo705.insertOne( { _id:101, Information: [ { StudentName:Chris, StudentAge:21 }, { StudentName:David, StudentAge:23 },

  1. - MongoDB क्वेरी: $or में मल्टीपल कंडीशन्स सेट करके दस्तावेज प्राप्त करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo711.insertOne({Name:John,Marks:75,Age:21,status:Active}); { acknowledged : true, insertedId : ObjectId(5ea85c215d33e20ed1097b7e) } > db.demo711.insertOne({Name:Chris,Marks:55,Age:22,status:Active}); { acknowledged : true, insertedId : Objec

  1. - MongoDB में विशिष्ट एकाधिक दस्तावेज प्राप्त करें

    MongoDB में विशिष्ट एकाधिक दस्तावेज प्राप्त करने के लिए, $in का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo593.insertOne({id:1,Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e93177dfd2d90c177b5bcd9) } > db.demo593.insertOne({id:2,Name:John}); { acknowledged