MongoDB में db.collection.bulkWrite() विधि निष्पादन के क्रम के लिए नियंत्रण के साथ कई लेखन संचालन करती है।
बल्क राइट ऑपरेशंस एकल संग्रह को प्रभावित करते हैं। collection भाग उस संग्रह का नाम है जिसके साथ संचालन करना है।
बल्क राइट ऑपरेशंस
db.collection.bulkWrite() निम्नलिखित लेखन कार्यों को करने के लिए विधि का उपयोग किया जा सकता है:
insertOneupdateOneupdateManyreplaceOnedeleteOnedeleteMany
इनमें से कोई भी तरीका db.collection.bulkWrite() . पर कॉल में शामिल किया जा सकता है , और आप एक ही कॉल में विभिन्न विधियों को शामिल कर सकते हैं।
उदाहरण
यहां db.collection.bulkWrite() . का उपयोग करने का एक उदाहरण दिया गया है pets . नामक संग्रह के विरुद्ध बल्क राइट ऑपरेशन करने के लिए :
मान लीजिए कि हम निम्नलिखित दस्तावेज़ों को pets . नामक संग्रह में सम्मिलित करते हैं :
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog", weight: 20 },
{ _id: 2, name: "Bark", type: "Dog", weight: 10 },
{ _id: 3, name: "Meow", type: "Cat" },
{ _id: 4, name: "Scratch", type: "Cat" },
{ _id: 5, name: "Bruce", type: "Bat" }
])
अब हम उपयोग कर सकते हैं db.collection.bulkWrite() उस संग्रह के खिलाफ बल्क राइट ऑपरेशन करने के लिए।
उदाहरण:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 6, "name": "Bubbles", "type": "Fish" }}},
{ updateOne : {
"filter" : { "_id" : 2 },
"update" : { $set : { "weight" : 15 } }
} },
{ deleteOne : { "filter" : { "_id" : 5 } } },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 }
} }
]) परिणाम:
{
"acknowledged" : true,
"deletedCount" : 1,
"insertedCount" : 1,
"matchedCount" : 2,
"upsertedCount" : 0,
"insertedIds" : {
"0" : 6
},
"upsertedIds" : {
}
} इस मामले में, हमने एक दस्तावेज़ डाला, दूसरे दस्तावेज़ को अपडेट किया, दूसरे को हटा दिया, और दूसरे दस्तावेज़ को बदल दिया।
db.collection.bulkWrite() विधि निम्नलिखित लौटाती है:
- एक बूलियन
acknowledgedtrue. के रूप में यदि ऑपरेशन लिखित चिंता याfalse. के साथ चलता है अगर लेखन चिंता अक्षम थी। - प्रत्येक लेखन कार्य के लिए एक गणना।
- एक सरणी जिसमें एक
_idहोता है प्रत्येक सफलतापूर्वक डाले गए या जोड़े गए दस्तावेज़ों के लिए।
परिणाम देखें
आइए अब फिर से संग्रह के दस्तावेज़ों पर एक नज़र डालते हैं।
db.pets.find() परिणाम:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 15 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 }
{ "_id" : 6, "name" : "Bubbles", "type" : "Fish" } हम देख सकते हैं कि सभी परिवर्तन निर्दिष्ट किए गए थे।
ordered पैरामीटर
बल्क राइट ऑपरेशंस या तो ऑर्डर किए जा सकते हैं या अनियंत्रित। डिफ़ॉल्ट रूप से, उन्हें आदेश दिया जाता है।
आप ऑर्डर किए गए बूलियन पैरामीटर का उपयोग करके ऑर्डर निर्दिष्ट कर सकते हैं। true . का मान प्रदान करना इसे संचालन की एक आदेशित सूची बनाता है, इसे false . पर सेट करता है इसे संचालन की एक अनियंत्रित सूची बनाता है।
संचालन की एक आदेशित सूची के साथ, MongoDB संचालन को क्रमिक रूप से निष्पादित करता है। यदि लेखन कार्यों में से किसी एक के प्रसंस्करण के दौरान कोई त्रुटि होती है, तो MongoDB सूची में किसी भी शेष लेखन संचालन को संसाधित किए बिना वापस आ जाएगा।
संचालन की एक अनियंत्रित सूची के साथ, MongoDB समानांतर में संचालन निष्पादित कर सकता है (हालांकि इसकी गारंटी नहीं है)। यदि लेखन कार्यों में से किसी एक के प्रसंस्करण के दौरान कोई त्रुटि होती है, तो MongoDB सूची में शेष लेखन कार्यों को संसाधित करना जारी रखेगा।
अधिक जानकारी
db.collection.bulkWrite() विधि एक writeConcern को भी स्वीकार करती है तर्क, जो लेखन कार्यों के लिए MongoDB से अनुरोध की गई पावती के स्तर का वर्णन करता है।
db.collection.bulkWrite() . के लिए MongoDB दस्तावेज़ देखें अधिक जानकारी के लिए।