1. अवलोकन
इस ट्यूटोरियल में, हम MongoDB में बल्क अपडेट और इन्सर्ट ऑपरेशंस करने पर ध्यान देंगे। इसके अतिरिक्त, MongoDB API कॉल प्रदान करता है जो एक ही ऑपरेशन में कई दस्तावेज़ सम्मिलित करने या पुनर्प्राप्त करने की अनुमति देता है। MongoDB सरणी . का उपयोग करता है या बैच इंटरफेस जो क्लाइंट और डेटाबेस के बीच कॉल की संख्या को कम करके डेटाबेस के प्रदर्शन में काफी सुधार करते हैं।
इस ट्यूटोरियल में, हम MongoDB शेल और जावा ड्राइवर कोड का उपयोग करके दोनों समाधानों को देखेंगे।
आइए MongoDB में दस्तावेज़ों के थोक अद्यतनीकरण को लागू करने पर विचार करें।
2. डेटाबेस इनिशियलाइज़ेशन
सबसे पहले, हमें मोंगो शेल से जुड़ने की जरूरत है:
mongo --host localhost --port 27017
अब, एक डेटाबेस सेट करें बेल्डुंग और एक नमूना संग्रह आबादी :
use baeldung;
db.createCollection(populations);
आइए संग्रह में कुछ नमूना डेटा जोड़ें आबादी insertMany . का उपयोग करके विधि:
db.populations.insertMany([
{
"cityId":1124,
"cityName":"New York",
"countryName":"United States",
"continentName":"North America",
"population":22
},
{
"cityId":1125,
"cityName":"Mexico City",
"countryName":"Mexico",
"continentName":"North America",
"population":25
},
{
"cityId":1126,
"cityName":"New Delhi",
"countryName":"India",
"continentName":"Asia",
"population":45
},
{
"cityId":1134,
"cityName":"London",
"countryName":"England",
"continentName":"Europe",
"population":32
}]);
उपरोक्त कई डालें क्वेरी निम्नलिखित दस्तावेज़ लौटाएगी:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("623575049d55d4e137e477f6"),
ObjectId("623575049d55d4e137e477f7"),
ObjectId("623575049d55d4e137e477f8"),
ObjectId("623575049d55d4e137e477f9")
]
}
यहाँ, हमने MongoDB में सभी प्रकार के राइट बल्क ऑपरेशन करने के लिए उपरोक्त क्वेरी में चार दस्तावेज़ सम्मिलित किए हैं।
डेटाबेस बेल्डुंग सफलतापूर्वक बनाया गया है, और सभी आवश्यक डेटा भी संग्रह आबादी . में डाला गया है , इसलिए हम बल्क अपडेट करने के लिए तैयार हैं।
3. MongoDB शेल क्वेरी का उपयोग करना
MongoDB के थोक संचालन निर्माता का उपयोग एकल संग्रह के लिए थोक में लेखन कार्यों की सूची बनाने के लिए किया जाता है। हम बल्क ऑपरेशंस को 2 अलग-अलग तरीकों से इनिशियलाइज़ कर सकते हैं। विधि initializeOrderedBulkOp लिखने के संचालन की आदेशित सूची में थोक संचालन करने के लिए उपयोग किया जाता है। initializeOrderedBulkOp . की कमियों में से एक यह है कि यदि किसी भी लेखन कार्यों को संसाधित करते समय कोई त्रुटि होती है, तो MongoDB सूची में शेष लेखन कार्यों को संसाधित किए बिना वापस आ जाएगा।
हम एक डीबी कॉल में विभिन्न प्रकार के संचालन करने के लिए सम्मिलित, अद्यतन, प्रतिस्थापित और हटाने के तरीकों का उपयोग कर सकते हैं। एक उदाहरण के रूप में, आइए MongoDB शेल का उपयोग करके बल्क राइट ऑपरेशन क्वेरी देखें:
db.populations.bulkWrite([
{
insertOne :
{
"document" :
{
"cityId":1128,
"cityName":"Kathmandu",
"countryName":"Nepal",
"continentName":"Asia",
"population":12
}
}
},
{
insertOne :
{
"document" :
{
"cityId":1130,
"cityName":"Mumbai",
"countryName":"India",
"continentName":"Asia",
"population":55
}
}
},
{
updateOne :
{
"filter" :
{
"cityName": "New Delhi"
},
"update" :
{
$set :
{
"status" : "High Population"
}
}
}
},
{
updateMany :
{
"filter" :
{
"cityName": "London"
},
"update" :
{
$set :
{
"status" : "Low Population"
}
}
}
},
{
deleteOne :
{
"filter" :
{
"cityName":"Mexico City"
}
}
},
{
replaceOne :
{
"filter" :
{
"cityName":"New York"
},
"replacement" :
{
"cityId":1124,
"cityName":"New York",
"countryName":"United States",
"continentName":"North America",
"population":28
}
}
}
]);
उपरोक्त बल्कराइट क्वेरी निम्नलिखित दस्तावेज़ लौटाएगी:
{
"acknowledged" : true,
"deletedCount" : 1,
"insertedCount" : 2,
"matchedCount" : 3,
"upsertedCount" : 0,
"insertedIds" :
{
"0" : ObjectId("623575f89d55d4e137e477f9"),
"1" : ObjectId("623575f89d55d4e137e477fa")
},
"upsertedIds" : {}
}
यहां, उपरोक्त क्वेरी में, हमने सभी प्रकार के लेखन कार्य किए, अर्थात, insertOne , अपडेटवन , एक हटाएं , एक को बदलें ।
सबसे पहले, हमने insertOne . का इस्तेमाल किया संग्रह में एक नया दस्तावेज़ सम्मिलित करने की विधि। दूसरे, हमने updateOne . का इस्तेमाल किया शहर का नाम . के दस्तावेज़ को अद्यतन करने के लिए "नई दिल्ली"। बाद में, हमने deleteOne . का इस्तेमाल किया फ़िल्टर के आधार पर संग्रह से दस्तावेज़ को हटाने की विधि। अंत में, हमने replaceOne . का उपयोग किया पूरे दस्तावेज़ को फ़िल्टर से बदलने के लिए शहर का नाम "न्यूयॉर्क"।
4. जावा ड्राइवर का उपयोग करना
हमने थोक लेखन कार्यों को करने के लिए MongoDB शेल क्वेरी पर चर्चा की है। बल्क राइट ऑपरेशन बनाने से पहले, आइए पहले एक MongoClient बनाएं संग्रह आबादी . के साथ संबंध डेटाबेस का बेल्डुंग :
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("baeldung");
MongoCollection<Document> collection = database.getCollection("populations");
यहां, हमने डिफ़ॉल्ट पोर्ट 27017 पर चल रहे MongoDB सर्वर के साथ कनेक्शन बनाया है। आइए अब जावा कोड का उपयोग करके समान बल्क ऑपरेशन लागू करें:
List<WriteModel<Document>> writeOperations = new ArrayList<WriteModel<Document>>();
writeOperations.add(new InsertOneModel<Document>(new Document("cityId", 1128)
.append("cityName", "Kathmandu")
.append("countryName", "Nepal")
.append("continentName", "Asia")
.append("population", 12)));
writeOperations.add(new InsertOneModel<Document>(new Document("cityId", 1130)
.append("cityName", "Mumbai")
.append("countryName", "India")
.append("continentName", "Asia")
.append("population", 55)));
writeOperations.add(new UpdateOneModel<Document>(new Document("cityName", "New Delhi"),
new Document("$set", new Document("status", "High Population"))
));
writeOperations.add(new UpdateManyModel<Document>(new Document("cityName", "London"),
new Document("$set", new Document("status", "Low Population"))
));
writeOperations.add(new DeleteOneModel<Document>(new Document("cityName", "Mexico City")));
writeOperations.add(new ReplaceOneModel<Document>(new Document("cityId", 1124),
new Document("cityName", "New York").append("cityName", "United States")
.append("continentName", "North America")
.append("population", 28)));
BulkWriteResult bulkWriteResult = collection.bulkWrite(writeOperations);
System.out.println("bulkWriteResult:- " + bulkWriteResult);
यहां, हमने सबसे पहले writeModel . की एक सूची बनाई है एक ही अद्यतन सूची में सभी विभिन्न प्रकार के लेखन कार्यों को जोड़ने के लिए। इसके अलावा, हमने InsertOneModel . का उपयोग किया है , UpdateOneModel , अपडेटManyModel , DeleteOneModel , और ReplaceOneModel हमारी क्वेरी में। अंत में, बल्कराइट विधि ने एक ही बार में सभी कार्यों को निष्पादित किया।