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

नेवला:पहले स्तर के खेतों को आबाद किए बिना 2 स्तर की गहरी आबादी को कैसे आबाद करें? मोंगोडब में

एक उत्साही मोंगोडब प्रशंसक के रूप में, मेरा सुझाव है कि आप अत्यधिक संबंधपरक डेटा के लिए एक रिलेशनल डेटाबेस का उपयोग करें - यही वह है जिसके लिए इसे बनाया गया है। जब आप किसी एक वस्तु को प्राप्त करने के लिए 3+ प्रश्न करने पड़ते हैं तो आप मोंगोडब के सभी लाभों को खो रहे हैं।

बुउउउउत , मुझे पता है कि टिप्पणी बहरे कानों पर पड़ेगी। आपका सबसे अच्छा दांव प्रदर्शन के बारे में जितना हो सके उतना सचेत रहना है। आपका पहला कदम फ़ील्ड को आवश्यक न्यूनतम तक सीमित करना है। बुनियादी प्रश्नों और कोई भी . के साथ भी यह एक अच्छा अभ्यास है डेटाबेस इंजन - केवल वही फ़ील्ड प्राप्त करें जिनकी आपको आवश्यकता है (जैसे. SELECT * FROM ===बुरा... बस इसे करना बंद करो!) आप डेटा के साथ नेवले द्वारा किए जाने वाले बहुत से पोस्ट-प्रोसेसिंग कार्य को बचाने में मदद करने के लिए दुबला प्रश्न करने का भी प्रयास कर सकते हैं। मैंने इसका परीक्षण नहीं किया, लेकिन इसे काम करना चाहिए...

SchemaA.find({}, 'field1 fieldB', { lean: true })
.populate({
    name: 'fieldB',
    select: 'fieldC',
    options: { lean: true }
}).exec(function (err, result) {
    // not sure how you are populating "result" in your example, as it should be an array, 
    // but you said your code works... so I'll let you figure out what goes here.
});

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

उदाहरण के लिए, यदि मेरे पास पुस्तक स्कीमा और लेखक स्कीमा है, तो मैं लेखकों के संग्रह में पूर्ण प्रोफ़ाइल के _id संदर्भ के साथ-साथ पुस्तक संग्रह में लेखकों का पहला और अंतिम नाम सहेज सकता हूं। इस तरह मैं अपनी पुस्तकों को एक ही प्रश्न में लोड कर सकता हूँ, फिर भी लेखक का नाम प्रदर्शित कर सकता हूँ, और फिर लेखक की प्रोफ़ाइल के लिए एक हाइपरलिंक उत्पन्न कर सकता हूँ:/author/{_id} . इसे "डेटा डिनॉर्मलाइज़ेशन" के रूप में जाना जाता है, और यह लोगों को नाराज़गी देने के लिए जाना जाता है। मैं कोशिश करता हूं और इसे डेटा पर उपयोग करता हूं जो बहुत बार नहीं बदलता है - जैसे लोगों के नाम। इस अवसर पर कि कोई नाम बदल जाता है, सभी नामों को कई स्थानों पर अपडेट करने के लिए एक फ़ंक्शन लिखना तुच्छ है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. अधिकतम दूरी की अनदेखी करते हुए प्रश्नों के निकट Yii इमोंगोदस्तावेज

  2. नेवला/मोंगोडब में उप-दस्तावेज़ सरणी को कैसे क्रमबद्ध करें?

  3. डायनेमोडीबी बनाम मोंगोडीबी नोएसक्यूएल

  4. multer का उपयोग करके mongoDB डेटाबेस में फ़ाइलों की एक सरणी को कैसे सहेजते हैं?

  5. नेवला डुप्लीकेट कुंजी त्रुटि upsert के साथ