MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडीबी बीएसओएन गाइड

1. परिचय

इस ट्यूटोरियल में, हम बीएसओएन को देखेंगे और देखेंगे कि मोंगोडीबी के साथ इंटरैक्ट करने के लिए हम इसका उपयोग कैसे कर सकते हैं।

अब, MongoDB और इसकी सभी क्षमताओं का गहन विवरण इस लेख के दायरे से बाहर है। हालांकि, कुछ प्रमुख अवधारणाओं को समझना उपयोगी होगा।

MongoDB एक वितरित, NoSQL दस्तावेज़ संग्रहण इंजन है। दस्तावेज़ों को बीएसओएन डेटा के रूप में संग्रहीत किया जाता है और संग्रह में एक साथ समूहीकृत किया जाता है। संग्रह में दस्तावेज़ एक रिलेशनल डेटाबेस तालिका में पंक्तियों के अनुरूप होते हैं

अधिक गहराई से देखने के लिए, प्रारंभिक MongoDB लेख देखें।

2. बीएसओएनक्या है ?

बीएसओएन का अर्थ है बाइनरी JSON . यह JSON जैसे डेटा के बाइनरी क्रमांकन के लिए एक प्रोटोकॉल है।

JSON एक डेटा विनिमय प्रारूप है जो आधुनिक वेब सेवाओं में लोकप्रिय है। यह जटिल डेटा संरचनाओं का प्रतिनिधित्व करने का एक लचीला तरीका प्रदान करता है।

नियमित JSON का उपयोग करने पर BSON कई लाभ प्रदान करता है:

  • संक्षिप्त:ज्यादातर मामलों में, बीएसओएन संरचना को संग्रहीत करने के लिए इसके JSON समकक्ष की तुलना में कम स्थान की आवश्यकता होती है
  • डेटा प्रकार:बीएसओएन अतिरिक्त डेटा प्रकार प्रदान करता है नियमित JSON में नहीं मिला, जैसे दिनांक और बिनडाटा

बीएसओएन का उपयोग करने का एक मुख्य लाभ यह है कि इसे पार करना आसान है . बीएसओएन दस्तावेजों में अतिरिक्त मेटाडेटा होता है जो दस्तावेज़ के क्षेत्रों में आसानी से हेरफेर करने की अनुमति देता है, बिना पूरे दस्तावेज़ को पढ़े।

3. मोंगोडीबी चालक

अब जब हमें बीएसओएन और मोंगोडीबी की बुनियादी समझ है, तो आइए देखें कि उन्हें एक साथ कैसे उपयोग किया जाए। हम CRUD के संक्षिप्त नाम (C .) से मुख्य क्रियाओं पर ध्यान केंद्रित करेंगे फिर से, आर ईड, यू पीडेट, डी इलेट) ।

MongoDB अधिकांश आधुनिक प्रोग्रामिंग भाषाओं के लिए सॉफ़्टवेयर ड्राइवर प्रदान करता है। ड्राइवर BSON लाइब्रेरी के शीर्ष पर बने होते हैं , जिसका अर्थ है कि हम क्वेरी बनाते समय सीधे BSON API के साथ काम करेंगे। अधिक जानकारी के लिए, MongoDB क्वेरी भाषा के लिए हमारा गाइड देखें।

इस खंड में, हम क्लस्टर से कनेक्ट करने के लिए ड्राइवर का उपयोग करने और विभिन्न प्रकार के प्रश्नों को करने के लिए BSON API का उपयोग करने पर विचार करेंगे। ध्यान दें कि MongoDB ड्राइवर एक फ़िल्टर प्रदान करता है वर्ग जो हमें अधिक कॉम्पैक्ट कोड लिखने में मदद कर सकता है। हालांकि, इस ट्यूटोरियल के लिए, हम पूरी तरह से मुख्य बीएसओएन एपीआई के उपयोग पर ध्यान केंद्रित करेंगे।

सीधे MongoDB ड्राइवर और BSON का उपयोग करने के विकल्प के रूप में, हमारे स्प्रिंग डेटा MongoDB मार्गदर्शिका पर एक नज़र डालें।

3.1. कनेक्ट हो रहा है

आरंभ करने के लिए, हम सबसे पहले MongoDB ड्राइवर को अपने एप्लिकेशन में एक निर्भरता के रूप में जोड़ते हैं:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>3.10.1</version>
</dependency>

फिर हम एक MongoDB डेटाबेस और संग्रह के लिए एक कनेक्शन बनाते हैं:

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("myDB");
MongoCollection<Document> collection = database.getCollection("employees");

शेष अनुभाग संग्रह . का उपयोग करके क्वेरी बनाने पर विचार करेंगे संदर्भ।

3.2. सम्मिलित करें

मान लें कि हमारे पास निम्न JSON है जिसे हम कर्मचारियों में एक नए दस्तावेज़ के रूप में सम्मिलित करना चाहते हैं संग्रह:

{
  "first_name" : "Joe",
  "last_name" : "Smith",
  "title" : "Java Developer",
  "years_of_service" : 3,
  "skills" : ["java","spring","mongodb"],
  "manager" : {
     "first_name" : "Sally",
     "last_name" : "Johanson"
  }
}

यह उदाहरण JSON सबसे आम डेटा प्रकारों को दिखाता है जिनका हम MongoDB दस्तावेज़ों के साथ सामना करेंगे:टेक्स्ट, संख्यात्मक, सरणियाँ और एम्बेडेड दस्तावेज़।

BSON का उपयोग करके इसे सम्मिलित करने के लिए, हम MongoDB के दस्तावेज़ . का उपयोग करेंगे एपीआई:

Document employee = new Document()
    .append("first_name", "Joe")
    .append("last_name", "Smith")
    .append("title", "Java Developer")
    .append("years_of_service", 3)
    .append("skills", Arrays.asList("java", "spring", "mongodb"))
    .append("manager", new Document()
                           .append("first_name", "Sally")
                           .append("last_name", "Johanson"));
collection.insertOne(employee);

दस्तावेज़ क्लास बीएसओएन में प्रयुक्त प्राथमिक एपीआई है। यह जावा का विस्तार करता है मानचित्र इंटरफ़ेस और इसमें कई अतिभारित विधियाँ हैं। इससे मूल प्रकारों के साथ-साथ सामान्य ऑब्जेक्ट जैसे ऑब्जेक्ट आईडी, दिनांक और सूचियों के साथ काम करना आसान हो जाता है।

3.3. ढूँढें

MongoDB में एक दस्तावेज़ खोजने के लिए, हम एक खोज दस्तावेज़ प्रदान करते हैं जो निर्दिष्ट करता है कि किन फ़ील्ड पर क्वेरी करनी है। उदाहरण के लिए, "स्मिथ" के उपनाम वाले सभी दस्तावेज़ों को खोजने के लिए हम निम्नलिखित JSON दस्तावेज़ का उपयोग करेंगे:

{  
  "last_name": "Smith"
}

बीएसओएन में लिखा यह होगा:

Document query = new Document("last_name", "Smith");
List results = new ArrayList<>();
collection.find(query).into(results);

"ढूंढें" प्रश्न कई क्षेत्रों को स्वीकार कर सकते हैं और डिफ़ॉल्ट व्यवहार तार्किक और . का उपयोग करना है उन्हें संयोजित करने के लिए ऑपरेटर। इसका मतलब है कि केवल सभी फ़ील्ड से मेल खाने वाले दस्तावेज़ ही लौटाए जाएंगे

इससे निजात पाने के लिए, MongoDB या . प्रदान करता है क्वेरी ऑपरेटर:

{
  "$or": [
    { "first_name": "Joe" },
    { "last_name":"Smith" }
  ]
}

यह उन सभी दस्तावेज़ों को ढूंढेगा जिनमें या तो पहला नाम "जो" या अंतिम नाम "स्मिथ" होगा। इसे BSON के रूप में लिखने के लिए, हम एक नेस्टेड दस्तावेज़ . का उपयोग करेंगे ऊपर सम्मिलित क्वेरी की तरह:

Document query = 
  new Document("$or", Arrays.asList(
      new Document("last_name", "Smith"),
      new Document("first_name", "Joe")));
List results = new ArrayList<>();
collection.find(query).into(results);

3.4. अपडेट करें

अद्यतन क्वेरी MongoDB में थोड़ी भिन्न हैं क्योंकि उन्हें दो दस्तावेज़ों की आवश्यकता होती है :

  1. एक या अधिक दस्तावेज़ खोजने के लिए फ़िल्टर मानदंड
  2. एक अद्यतन दस्तावेज़ जो निर्दिष्ट करता है कि किन क्षेत्रों को संशोधित करना है

उदाहरण के लिए, मान लें कि हम हर उस कर्मचारी के लिए "सुरक्षा" कौशल जोड़ना चाहते हैं जिसके पास पहले से ही "वसंत" कौशल है। पहला दस्तावेज़ सभी कर्मचारियों को "वसंत" कौशल के साथ मिलेगा, और दूसरा उनके कौशल सरणी में एक नई "सुरक्षा" प्रविष्टि जोड़ देगा।

JSON में, ये दो प्रश्न इस प्रकार दिखाई देंगे:

{
  "skills": { 
    $elemMatch:  { 
      "$eq": "spring"
    }
  }
}

{
  "$push": { 
    "skills": "security"
  }
}

और बीएसओएन में, वे होंगे:

Document query = new Document(
  "skills",
  new Document(
    "$elemMatch",
    new Document("$eq", "spring")));
Document update = new Document(
  "$push",
  new Document("skills", "security"));
collection.updateMany(query, update);

3.5. मिटाएं

MongoDB में क्वेरी हटाएं क्वेरी खोजने के समान सिंटैक्स का उपयोग करें। हम केवल एक दस्तावेज़ प्रदान करते हैं जो मेल खाने के लिए एक या अधिक मानदंड निर्दिष्ट करता है।

उदाहरण के लिए, मान लें कि हमने अपने कर्मचारी डेटाबेस में एक बग पाया और गलती से कर्मचारियों को सेवा के वर्षों के लिए नकारात्मक मूल्य के साथ बनाया। उन सभी को खोजने के लिए, हम निम्नलिखित JSON का उपयोग करेंगे:

{
  "years_of_service" : { 
    "$lt" : 0
  }
}

समकक्ष बीएसओएन दस्तावेज़ होगा:

Document query = new Document(
  "years_of_service", 
  new Document("$lt", 0));
collection.deleteMany(query);

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ubuntu 16.04 . पर MongoDB स्थापित करना

  2. MongoDB एकत्रीकरण ढांचे के साथ पूर्ण मूल्य

  3. मेरी स्कीमा नेवला सरणियों में डिफ़ॉल्ट मान जोड़ने के लिए क्यों नहीं है?

  4. MongoDB स्कीमा डिज़ाइन:हमेशा एक स्कीमा होती है

  5. MongoDb 2.2, 2.4, और 2.6 में मानचित्र-प्रदर्शन कम करें