1. अवलोकन
इस ट्यूटोरियल में, हम सीखेंगे कि कुंजी नाम से MongoDB से कोई मान कैसे प्राप्त करें। हम लागू फ़िल्टर के आधार पर दस्तावेज़ों के प्रमुख फ़ील्ड नाम प्राप्त करने के लिए, MongoDB के विभिन्न तरीकों का पता लगाएंगे। सबसे पहले, हम ढूंढें . का उपयोग करेंगे या ढूंढें आवश्यक डेटा प्राप्त करने के लिए विधि और बाद में एकत्रीकरण . का उपयोग करें तरीका। यहां, हम MongoDB शेल क्वेरी और जावा ड्राइवर कोड दोनों में प्रश्न लिखेंगे।
आइए एक फ़ील्ड नाम से MongoDB में मान प्राप्त करने के विभिन्न तरीकों को देखें।
2. डेटाबेस इनिशियलाइज़ेशन
शुरू करने के लिए, हमें एक नया डेटाबेस सेट करना होगा baeldung और एक नया संग्रह, यात्रा :
use baeldung;
db.createCollection(travel);
आइए अब insertMany . का उपयोग करके संग्रह में कुछ डमी डेटा जोड़ें MongoDB की विधि:
db.travel.insertMany([
{
"passengerId":145,
"passengerName":"Nathan Green",
"passengerAge":25,
"sourceStation":"London",
"destinationStation":"Birmingham",
"seatType":"Slepper",
"emailAddress":"[email protected]"
},
{
"passengerId":148,
"passengerName":"Kevin Joseph",
"passengerAge":28,
"sourceStation":"Manchester",
"destinationStation":"London",
"seatType":"Slepper",
"emailAddress":"[email protected]"
},
{
"passengerId":154,
"passengerName":"Sheldon burns",
"passengerAge":26,
"sourceStation":"Cambridge",
"destinationStation":"Leeds",
"seatType":"Slepper",
"emailAddress":"[email protected]"
},
{
"passengerId":168,
"passengerName":"Jack Ferguson",
"passengerAge":24,
"sourceStation":"Cardiff",
"destinationStation":"Coventry",
"seatType":"Slepper",
"emailAddress":"[email protected]"
}
]);
उपरोक्त कई डालें क्वेरी निम्नलिखित JSON लौटाएगी:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("623d7f079d55d4e137e47825"),
ObjectId("623d7f079d55d4e137e47826"),
ObjectId("623d7f079d55d4e137e47827"),
ObjectId("623d7f079d55d4e137e47828")
]
}
अब तक, हमने संग्रह में डमी डेटा डाला है यात्रा ।
3. ढूंढें . का उपयोग करना विधि
ढूंढें विधि संग्रह पर निर्दिष्ट क्वेरी मानदंड से मेल खाने वाले दस्तावेज़ ढूंढती है और लौटाती है। यदि कई दस्तावेज़ शर्त से मेल खाते हैं, तो यह डिस्क पर दस्तावेज़ों के क्रम के आधार पर सभी दस्तावेज़ लौटा देगा। इसके अतिरिक्त, MongoDB में, ढूंढें विधि क्वेरी में पैरामीटर प्रक्षेपण का समर्थन करती है। अगर हम ढूंढें . में प्रोजेक्शन पैरामीटर निर्दिष्ट करते हैं विधि, यह केवल प्रोजेक्शन फ़ील्ड वाले सभी दस्तावेज़ लौटाएगा।
ध्यान देने योग्य एक महत्वपूर्ण बात यह है कि _id फ़ील्ड को हमेशा प्रतिक्रिया में शामिल किया जाता है जब तक कि स्पष्ट रूप से हटाया न जाए।
प्रदर्शित करने के लिए, आइए एक प्रमुख फ़ील्ड को प्रोजेक्ट करने के लिए शेल क्वेरी देखें:
db.travel.find({},{"passengerId":1}).pretty();
उपरोक्त प्रश्न का उत्तर होगा:
{ "_id" : ObjectId("623d7f079d55d4e137e47825"), "passengerId" : 145 }
{ "_id" : ObjectId("623d7f079d55d4e137e47826"), "passengerId" : 148 }
{ "_id" : ObjectId("623d7f079d55d4e137e47827"), "passengerId" : 154 }
{ "_id" : ObjectId("623d7f079d55d4e137e47828"), "passengerId" : 168 }
यहाँ, इस प्रश्न में, हमने केवल यात्री आईडी का अनुमान लगाया है। आइए अब _id . के बहिष्करण के साथ मुख्य फ़ील्ड देखें :
db.travel.find({},{"passengerId":1,"_id":0}).pretty();
उपरोक्त क्वेरी में निम्नलिखित प्रतिक्रिया होगी:
{ "passengerId" : 145 }
{ "passengerId" : 148 }
{ "passengerId" : 154 }
{ "passengerId" : 168 }
यहां, इस क्वेरी में, हमने _id . को बाहर कर दिया है प्रतिक्रिया प्रक्षेपण से क्षेत्र। आइए उपरोक्त क्वेरी के लिए जावा ड्राइवर कोड देखें:
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB database = mongoClient.getDB("baeldung");
DBCollection collection = database.getCollection("travel");
BasicDBObject queryFilter = new BasicDBObject();
BasicDBObject projection = new BasicDBObject();
projection.put("passengerId", 1);
projection.put("_id", 0);
DBCursor dbCursor = collection.find(queryFilter, projection);
while (dbCursor.hasNext()) {
System.out.println(dbCursor.next());
}
उपरोक्त कोड में, सबसे पहले, हमने एक MongoClient बनाया है पोर्ट 27017 . पर चल रहे स्थानीय मोंगो सर्वर के साथ कनेक्शन . इसके बाद, हमने ढूंढें . का उपयोग किया विधि, जिसमें दो पैरामीटर हैं, queryFilter, और प्रक्षेपण। क्वेरी DBObject इसमें वे फ़िल्टर होते हैं जिन पर हमें डेटा लाने की आवश्यकता होती है। यहां हमने DBCursor . का उपयोग करके यात्रा दस्तावेजों के सभी अनुमानित क्षेत्रों को मुद्रित किया है ।
4. एकत्रीकरण . का उपयोग करना विधि
एकत्रीकरण MongoDB में संचालन डेटा रिकॉर्ड और दस्तावेजों को संसाधित करता है और गणना किए गए परिणाम लौटाता है। यह विभिन्न दस्तावेजों से मूल्य एकत्र करता है और समूहीकृत डेटा पर विभिन्न प्रकार के संचालन करने से पहले उन्हें एक साथ समूहित करता है, जैसे योग, औसत, न्यूनतम, अधिकतम, आदि।
जब हमें अधिक जटिल एकत्रीकरण करने की आवश्यकता होती है, तो हम MongoDB एकत्रीकरण पाइपलाइन का उपयोग कर सकते हैं। एकत्रीकरण पाइपलाइन, समग्र परिणाम प्राप्त करने के लिए MongoDB क्वेरी सिंटैक्स के साथ संयुक्त चरणों का संग्रह है।
आइए कुंजी नाम से मान प्राप्त करने के लिए एकत्रीकरण क्वेरी पर गौर करें:
db.travel.aggregate([
{
"$project":{
"passengerId":1
}
}
]).pretty();
उपरोक्त एकत्रीकरण प्रश्न का उत्तर होगा:
{ "_id" : ObjectId("623d7f079d55d4e137e47825"), "passengerId" : 145 }
{ "_id" : ObjectId("623d7f079d55d4e137e47826"), "passengerId" : 148 }
{ "_id" : ObjectId("623d7f079d55d4e137e47827"), "passengerId" : 154 }
{ "_id" : ObjectId("623d7f079d55d4e137e47828"), "passengerId" : 168 }
इस मामले में, हमने $प्रोजेक्ट . का इस्तेमाल किया एकत्रीकरण पाइपलाइन का चरण। $प्रोजेक्ट निर्दिष्ट करता है कि किन क्षेत्रों को शामिल या बहिष्कृत करना है। हमारी क्वेरी में, हमने केवल पैसेंजर आईडी को प्रोजेक्शन स्टेज में पास किया है।
आइए उपरोक्त क्वेरी के लिए जावा ड्राइवर कोड देखें:
ArrayList<Document> response = new ArrayList<>();
ArrayList<Document> pipeline = new ArrayList<>(Arrays.asList(new Document("$project", new Document("passengerId", 1L))));
database = mongoClient.getDatabase("baeldung");
database.getCollection("travel").aggregate(pipeline).allowDiskUse(true).into(response);
System.out.println("response:- " + response);
हम एग्रीगेशन पाइपलाइन को इस तरह भी लिख सकते हैं:
ArrayList<Document> response = new ArrayList<>();
ArrayList<Bson> pipeline = new ArrayList<>(Arrays.asList(
project(fields(Projections.exclude("_id"), Projections.include("passengerId")))));
MongoDatabase database = mongoClient.getDatabase("baeldung");
database.getCollection("travel").aggregate(pipeline).allowDiskUse(true).into(response);
System.out.println("response:- "+response);
हमने जावा ड्राइवर कोड के साथ एक एकत्रीकरण पाइपलाइन बनाई और प्रोजेक्ट चरण को केवल passengerId को शामिल करने के लिए सेट किया। खेत। अंत में, हमने एग्रीगेशन पाइपलाइन को एग्रीगेट . तक पहुंचा दिया डेटा पुनर्प्राप्त करने की विधि।