MongoDB में bulkWrite() का उपयोग करके सशर्त अपसर्ट और एकाधिक ऑपरेशन करना
MongoDB में एक ही ऑपरेशन में एकाधिक राइट ऑपरेशन (अपडेट, इन्सर्ट, अपसर्ट) करने के लिए bulkWrite() का उपयोग करें। यह सशर्त अपसर्ट लॉजिक के लिए आदर्श है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo428.insertOne({ "Name" : "Chris", "Age" : 21 });
{ "acknowledged" : true, "insertedId" : ObjectId("5e75f428bbc41e36cc3cae83") }
> db.demo428.insertOne({ "Name" : "Chris", "Age" : 23 });
{ "acknowledged" : true, "insertedId" : ObjectId("5e75f429bbc41e36cc3cae84") }
> db.demo428.insertOne({ "Name" : "David", "Age" : 22 });
{ "acknowledged" : true, "insertedId" : ObjectId("5e75f42abbc41e36cc3cae85") }
> db.demo428.insertOne({ "Name" : "David", "Age" : 21 });
{ "acknowledged" : true, "insertedId" : ObjectId("5e75f42abbc41e36cc3cae86") }
सभी दस्तावेज़ देखना
> db.demo428.find();
आउटपुट:
{ "_id" : ObjectId("5e75f428bbc41e36cc3cae83"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e75f429bbc41e36cc3cae84"), "Name" : "Chris", "Age" : 23 }
{ "_id" : ObjectId("5e75f42abbc41e36cc3cae85"), "Name" : "David", "Age" : 22 }
{ "_id" : ObjectId("5e75f42abbc41e36cc3cae86"), "Name" : "David", "Age" : 21 }
सशर्त अपसर्ट के साथ bulkWrite (David, Age 22 को अपडेट; Carol, Age 22 इन्सर्ट)
> db.demo428.bulkWrite(
[
{ "updateOne": {
"filter": { "Name": "David", "Age": 22 },
"update": { "$set": { "Info": {Name:"John"} } }
}},
{ "insertOne": {
"document": { "Name": "Carol", "Age": 22, "Info": {Name:"John"} }
}}
],
{ "ordered": false }
)
{ "acknowledged" : true, "deletedCount" : 0, "insertedCount" : 1, "matchedCount" : 1, "upsertedCount" : 0, "insertedIds" : { "1" : ObjectId("5e75f448bbc41e36cc3cae87") }, "upsertedIds" : { } }
ऑपरेशन के बाद दस्तावेज़ देखना
> db.demo428.find();
आउटपुट:
{ "_id" : ObjectId("5e75f428bbc41e36cc3cae83"), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId("5e75f429bbc41e36cc3cae84"), "Name" : "Chris", "Age" : 23 }
{ "_id" : ObjectId("5e75f42abbc41e36cc3cae85"), "Name" : "David", "Age" : 22, "Info" : { "Name" : "John" } }
{ "_id" : ObjectId("5e75f42abbc41e36cc3cae86"), "Name" : "David", "Age" : 21 }
{ "_id" : ObjectId("5e75f448bbc41e36cc3cae87"), "Name" : "Carol", "Age" : 22, "Info" : { "Name" : "John" } }
bulkWrite ऑपरेशन प्रकार:
| ऑपरेशन | विवरण |
|---|---|
insertOne | एक दस्तावेज़ इन्सर्ट |
updateOne | एक दस्तावेज़ अपडेट |
updateMany | एकाधिक दस्तावेज़ अपडेट |
deleteOne | एक दस्तावेज़ डिलीट |
deleteMany | एकाधिक दस्तावेज़ डिलीट |
replaceOne | एक दस्तावेज़ रिप्लेस |
विकल्प:
ordered: true(डिफ़ॉल्ट) - क्रम में निष्पादित, पहली त्रुटि पर रुकेंordered: false- अनऑर्डर्ड, त्रुटि पर भी जारी रखें, बेहतर प्रदर्शनbypassDocumentValidation- वैलिडेशन बायपास
अपसर्ट पैटर्न: updateOne में upsert: true जोड़कर अपसर्ट करें।