MongoDB एक दस्तावेज़ डेटाबेस है और यह PostgreSQL जैसे संबंधपरक डेटाबेस जैसे दस्तावेज़ों के बीच संबंध बनाए नहीं रखता है।

फिर भी, MongoDB आपको दस्तावेज़ों के बीच संबंध बनाने की अनुमति देता है। इन संबंधों को या तो एम्बेडेड या संदर्भित दृष्टिकोणों के माध्यम से तैयार किया जा सकता है। आओ हम इसे नज़दीक से देखें।

एम्बेडेड रिश्ते बनाम। संदर्भ संबंध

एक एम्बेडेड दृष्टिकोण में, एक दस्तावेज़ सीधे दूसरे दस्तावेज़ के अंदर डाला जाता है, जिसके परिणामस्वरूप नेस्टेड डेटा होता है। प्रक्रिया को "असामान्यीकरण" भी कहा जाता है।

दूसरी ओर, संदर्भ दृष्टिकोण, एक दस्तावेज़ से दूसरे दस्तावेज़ को इंगित करने के लिए दस्तावेज़ संदर्भों का उपयोग करता है। इस दृष्टिकोण को "सामान्यीकरण" भी कहा जाता है।

MongoDB: एम्बेडेड दस्तावेज़ों के साथ एक-से-एक संबंध

आप एम्बेडेड दृष्टिकोण का उपयोग करके दस्तावेज़ों के बीच एक-से-एक संबंध बना सकते हैं। यह संबंध तब होता है जब एक दस्तावेज़ वस्तु केवल एक अन्य दस्तावेज़ से संबंधित हो सकती है।

एक छात्र डेटाबेस पर विचार करें। इस डेटाबेस में निम्नलिखित दस्तावेजों के साथ छात्र और पता संग्रह शामिल हैं।

// छात्र दस्तावेज़
instagram viewer

{
"छात्र का नाम": "फ्रोडो बैगिन्स",
"फोन नंबर": "987654321",
};
// पता दस्तावेज़
{
"छात्र का नाम": "फ्रोडो बैगिन्स",
"स्ट्रीट": "बैगशॉट रो",
"शहर": "होबिटन",
}

इस डेटाबेस में, एक छात्र को केवल एक पता रखने की अनुमति है। पता पुनः प्राप्त करने के लिए, आपको छात्र के नाम का उपयोग करके पता संग्रह को क्वेरी करना होगा।

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

ऐसे मामलों में जहां पते का उपयोग अन्य विवरणों के साथ किया जाता है जैसे a छात्र का नाम, आपको डेटाबेस को कई बार क्वेरी करना होगा। इसका नकारात्मक पक्ष बड़ी संख्या में पठन संचालन और परिणामस्वरूप कम क्वेरी प्रदर्शन है।

एम्बेडेड दृष्टिकोण का उपयोग करके, आप सीधे छात्र दस्तावेज़ में पता डेटा सम्मिलित कर सकते हैं और डेटा प्राप्त करने के लिए केवल एक ही क्वेरी का उपयोग कर सकते हैं।

{
"छात्र का नाम": "फ्रोडो बैगिन्स",
"फोन नंबर": "987654321",
"पता": [{
"स्ट्रीट": "बैगशॉट रो",
"शहर": "होबिटन"
}],
};

के माध्यम से पता पुनः प्राप्त करने के लिए छात्र का नाम, इस क्वेरी का उपयोग करें।

db.student.findOne({"studentName":"Frodo Baggins"}, {"address":1})

MongoDB में एम्बेडेड दस्तावेज़ों के साथ एक-से-अनेक संबंध

ऐसी स्थिति पर विचार करें जहां एक छात्र के कई पते हों। छात्र और पतों के बीच संबंध एक-से-अनेक हो जाते हैं।

एम्बेडेड मॉडल आपको छात्र दस्तावेज़ में एकाधिक पते जोड़ने की अनुमति देता है। जैसा कि एम्बेडेड दस्तावेज़ों का उपयोग करते हुए एक-से-एक संबंध में होता है, इस दृष्टिकोण में अपेक्षाकृत उच्च क्वेरी प्रदर्शन होता है।

{
"छात्र का नाम": "फ्रोडो बैगिन्स",
"फोन नंबर": "987654321",
"पता": [
{
"स्ट्रीट": "बैगशॉट रो",
"शहर": "होबिटन"
},
{
"स्ट्रीट": "एक और बैगशॉट रो",
"शहर": "होबिटन 2"
},
]
};

नीचे दी गई क्वेरी निर्दिष्ट छात्र नाम के पते लौटाएगी।

db.student.findOne({studentName: "Frodo Baggins"}, {पता: 1})

सम्बंधित: MongoDB में दस्तावेज़ कैसे बनाएं

अब, यदि आपके पास अधिक पते हैं और उन्हें पता फ़ील्ड में जोड़ते रहें, तो दस्तावेज़ बहुत तेज़ी से अव्यवस्थित हो सकता है। एक समाधान दस्तावेज़ संदर्भों का उपयोग करना है।

MongoDB: दस्तावेज़ संदर्भों के साथ एक-से-अनेक संबंध

आप संदर्भ दृष्टिकोण का उपयोग करके एक-से-अनेक संबंध भी मॉडल कर सकते हैं। इस डेटा मॉडल में, छात्र और पते के डेटा को अलग-अलग संग्रह में रखा जाएगा। छात्र को उनके पते से जोड़ने के लिए, छात्र दस्तावेज़ में पता आईडी वाली फ़ील्ड जोड़ें।

{
"छात्र का नाम": "फ्रोडो बैगिन्स",
"फोन नंबर": "987654321",
"पता": [
ऑब्जेक्ट आईडी ("61fa7bfeebdadf8ac71427ea"),
ऑब्जेक्ट आईडी ("61fa7d19ebdadf8ac71427eb")
]
};

एक छात्र के पते का विवरण प्राप्त करने में छात्र दस्तावेज़ से पता आईडी प्राप्त करना और संग्रह से वास्तविक पते प्राप्त करने के लिए उन आईडी का उपयोग करना शामिल है।

const छात्र = db.users.findOne ({"नाम": "फ्रोडो बैगिन्स"}, {"पता": 1})
const पते = db.address.find({"_id":{"$in":student["address_ids"]}})

एंबेडेड और संदर्भ दृष्टिकोणों के बीच चयन करना

एम्बेडिंग और रेफरेंसिंग मॉडल दोनों के अपने फायदे और नुकसान हैं, और आपको चुनाव करने से पहले कुछ बातों पर विचार करना होगा। शुरुआत के लिए, आपको उपयोग के मामले पर विचार करना होगा। यदि डेटा केवल एक दस्तावेज़ से संबंधित होगा, तो एम्बेड करना आपका सबसे अच्छा विकल्प हो सकता है।

एक-से-अनेक संबंध बनाने के लिए, आप या तो संदर्भ मॉडल या एम्बेडेड मॉडल का उपयोग कर सकते हैं। एक साफ और सुसंगत दस्तावेज़ में परिणाम संदर्भित करना क्योंकि आप केवल उस दस्तावेज़ की संदर्भ आईडी जोड़ते हैं जिससे आप संबंधित होना चाहते हैं।

हालांकि, कनेक्टेड डेटा को पुनः प्राप्त करने के लिए आवश्यक रीड ऑपरेशंस की संख्या अपेक्षाकृत अधिक है और प्रदर्शन को प्रभावित कर सकती है। दस्तावेज़ को एम्बेड करने से प्रदर्शन में वृद्धि हो सकती है, लेकिन कई नेस्टेड दस्तावेज़ों के साथ आप एक भीड़भाड़ वाले संग्रह के साथ समाप्त हो सकते हैं।

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

MongoDB में डेटा मॉडलिंग कैसे भिन्न है?

डेटाबेस के लिए एक अलग दृष्टिकोण को ध्यान में रखते हुए? यहां बताया गया है कि MongoDB में डेटा मॉडलिंग कैसे काम करती है।

आगे पढ़िए

साझा करनाकलरवईमेल
संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • डेटाबेस
लेखक के बारे में
मैरी गैथोनी (4 लेख प्रकाशित)

मैरी गैथोनी एक सॉफ्टवेयर डेवलपर हैं जिन्हें तकनीकी सामग्री बनाने का जुनून है जो न केवल सूचनात्मक है बल्कि आकर्षक भी है। जब वह कोडिंग या लेखन नहीं कर रही होती है, तो उसे दोस्तों के साथ घूमने और बाहर रहने में मज़ा आता है।

मैरी गैथोनि. की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें