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

MongoDB और Mongoose:दस्तावेज़ संदर्भ आईडी की नेस्टेड सरणी

आपके पहले प्रश्न के संबंध में:

आप विशेष रूप से माता-पिता में संग्रहीत चाइल्ड-आईडी के साथ काम करने का एक बेहतर तरीका मांगते हैं। मुझे पूरा यकीन है कि इससे निपटने का कोई बेहतर तरीका नहीं है, अगर इसे इस तरह से करना है।

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

आपके दूसरे प्रश्न के संबंध में:

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

वैरिएंट B पर लाभ यह है कि आप अधिक संदर्भ स्टोर कर सकते हैं संपूर्ण . की तुलना में एक दस्तावेज़ (एक एकल पोस्ट) में टिप्पणियों के लिए टिप्पणियाँ, mongos 16MB दस्तावेज़-आकार-सीमा के कारण।

हालांकि डाउनसाइड वह है जिसका आपने उल्लेख किया है, कि यह उस संरचना को बनाए रखने में अक्षम है। मैं यह मानता हूं कि यह परिदृश्य दिखाने के लिए केवल एक उदाहरण है, इसलिए यहां मैं क्या करूंगा:मैं मामले के आधार पर तय करूंगा कि क्या उपयोग करना है।

  • यदि दस्तावेज़ को बहुत पढ़ा जाएगा, और अधिक लिखा नहीं जाएगा, और इसके 16MB से बड़े होने की संभावना नहीं है:उप-दस्तावेज़ एम्बेड करें। इस तरह आप एक ही प्रश्न में सारा डेटा प्राप्त कर सकते हैं।

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

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

  • यदि आपको दस्तावेज़ को एकाधिक . से संदर्भित करने की आवश्यकता है अन्य दस्तावेज़, और वे बहुत से लिखे गए हैं, लेकिन उन्हें अक्सर नहीं पढ़ा जाता है, आप शायद उन्हें संदर्भित करना बेहतर समझते हैं, क्योंकि यह कोड करना आसान है, क्योंकि आपको डुप्लिकेट डेटा को सिंक करने के लिए कोड लिखने की आवश्यकता नहीं है।

इस विशिष्ट मामले में (पोस्ट/टिप्पणी) माता-पिता को बच्चे से संदर्भित करना (बच्चे को माता-पिता को बताना _id ) शायद एक अच्छा विचार है, क्योंकि अन्य तरीकों की तुलना में इसे बनाए रखना आसान है, और अगर दस्तावेज़ सीधे एम्बेड किए गए थे तो दस्तावेज़ 16 एमबी से बड़ा हो सकता है। अगर मैं निश्चित रूप से जानता हूं कि दस्तावेज़ 16 एमबी से अधिक बड़ा नहीं होगा, तो उन्हें एम्बेड करना बेहतर होगा, क्योंकि डेटा को इस तरह से क्वेरी करना तेज़ है




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PHP के साथ mongodb पर प्रमाणित नहीं कर सकता

  2. PyMongo का उपयोग करके mongodb में एक पांडा डेटाफ़्रेम सम्मिलित करें

  3. नेवला के साथ आईडी द्वारा एक मोंगो उप-दस्तावेज़ का चयन कैसे करें?

  4. रेप्लिकासेट में MongoDB मल्टीपल मास्टर्स

  5. क्या उसी संग्रह पर क्वेरी प्रोजेक्शन का उपयोग करना संभव है जिसमें $elemMatch प्रोजेक्शन है?