2010-06-14 18 views
15

मुझे आश्चर्य है क्योंकि मैंने "विरासत" शब्द के लिए पीडीएफ "[noSql] निश्चित गाइड" और "शुरुआत [noSql]" खोजा लेकिन मुझे कुछ भी नहीं मिला? क्या मैं कुछ भूल रहा हूँ? क्योंकि मैं एक टेबल कर रहा हूं हाइबरनेट और माइस्क्ल के साथ पियरहाइरार्की विरासत, क्या यह किसी कारण से [noSql] में बहिष्कृत हो जाता है?विरासत?

उत्तर

43

मैं जानता हूँ कि क्या यह उत्तर एक छोटे से देर हो चुकी है, लेकिन MongoDB के लिए, तो आप शायद कुछ अलग देख रहे हैं (आप की तरह "न केवल एसक्यूएल" डेटाबेस के साथ बदलें [NoSQL])।

मोंगो स्कीमालेस है, इसलिए "tablePerHierarchy" की अवधारणा जरूरी नहीं है।

इस

table A: columns X, Y, Z 
table B: columns X, Y, Z, W 

की तरह कुछ

class A 
    property X 
    property Y 
    property Z 

class B inherits from A 
    property W 

निम्नलिखित एक RDMS में आप शायद होता मान लें लेकिन MongoDB एक स्कीमा नहीं है। इसलिए आपको इस तरह से डेटा बनाने की जरूरत नहीं है। इसके बजाय, आपके पास ए "बी (या सी ...) के सभी ऑब्जेक्ट्स (या" दस्तावेज़ ") वाले" संग्रह "होंगे।

{"_id":"1", "X":1, "Y":2, "Z":3} 
{"_id":"2", "X":5, "Y":6, "Z":7, "W":6} 

आपको लगता है कि मैं प्रकार की वस्तुओं के भंडारण कर रहा हूँ प्रकार बी MongoDB की वस्तुओं के पास एक सही यह बहुत आसान बना देता है पर ध्यान देंगे:

तो अपने संग्रह इस तरह वस्तुओं की एक श्रृंखला होगी। बस संग्रह से एक दस्तावेज़ खींचें और यह "जादुई" में सभी उपयुक्त फ़ील्ड/गुण हैं।

हालांकि, यदि आपके पास "डेटा ऑब्जेक्ट्स" या "इकाइयां" हैं, तो आप एक प्रकार जोड़कर अपना जीवन आसान बना सकते हैं।

{"_id":"1", "type":"A", "X":1, "Y":2, "Z":3} 
{"_id":"2", "type":"B", "X":5, "Y":6, "Z":7, "W":6} 

इससे आपकी वस्तुओं को लोड करने के लिए फैक्ट्री क्लास लिखना आसान हो जाता है।

4

वैसे यह एक बहुत पुराना सवाल है, लेकिन जब से मैं यहां समाप्त हुआ, मैं 2017 अपडेट जोड़ना चाहता हूं।
यदि आपका mongoose का उपयोग कर आप discriminators की जाँच कर सकते हैं MongoDB से कनेक्ट करने के:

discriminators एक स्कीमा विरासत तंत्र हैं। वे आपको में सक्षम करते हैं, जिसमें मोंगोडीबी संग्रह के अंतर्गत उसी के शीर्ष पर ओवरलैपिंग स्कीमा के साथ कई मॉडल हैं।

प्रलेखन पहले मेरे लिए थोड़ा अस्पष्ट था, यह article विचार को समझने के लिए एक बेहतर जगह हो सकता है।

संबंधित मुद्दे