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

Has_many को कैसे कार्यान्वित करें:मोंगोइड और मोंगोडब के साथ संबंधों के माध्यम से?

मोंगोइड में has_many नहीं है:थ्रू या समकक्ष सुविधा। यह मोंगोडीबी के साथ इतना उपयोगी नहीं होगा क्योंकि यह प्रश्नों में शामिल होने का समर्थन नहीं करता है, भले ही आप किसी अन्य के माध्यम से संबंधित संग्रह का संदर्भ दे सकें, फिर भी इसे कई प्रश्नों की आवश्यकता होगी।

https://github.com/mongoid/mongoid/issues/544

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

class Physician
  include Mongoid::Document
  has_and_belongs_to_many :patients
end

class Patient
  include Mongoid::Document
  has_and_belongs_to_many :physicians
end

दूसरे शब्दों में आप जॉइन टेबल को खत्म कर देंगे और इसका 'दूसरी तरफ' तक पहुंच के मामले में has_many :through पर समान प्रभाव पड़ेगा। लेकिन आपके मामले में शायद यह उचित नहीं है क्योंकि आपकी जॉइन टेबल एक अपॉइंटमेंट क्लास है जिसमें कुछ अतिरिक्त जानकारी होती है, न कि केवल एसोसिएशन।

आप इसे कैसे मॉडल करते हैं यह कुछ हद तक उन प्रश्नों पर निर्भर करता है जिन्हें आपको चलाने की आवश्यकता है, लेकिन ऐसा लगता है कि आपको अपॉइंटमेंट मॉडल जोड़ने और रोगी और चिकित्सक के साथ जुड़ाव को कुछ इस तरह परिभाषित करने की आवश्यकता होगी:

class Physician
  include Mongoid::Document
  has_many :appointments
end

class Appointment
  include Mongoid::Document
  belongs_to :physician
  belongs_to :patient
end

class Patient
  include Mongoid::Document
  has_many :appointments
end

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

class Appointment
  include Mongoid::Document
  embeds_many :meeting_notes
end

class MeetingNote
  include Mongoid::Document
  embedded_in :appointment
end

इसका मतलब है कि आप एक साथ अपॉइंटमेंट के साथ नोट्स को पुनः प्राप्त कर सकते हैं, जबकि यदि यह एक एसोसिएशन था तो आपको कई प्रश्नों की आवश्यकता होगी। आपको केवल एक दस्तावेज़ के लिए 16MB आकार की सीमा को ध्यान में रखना होगा, जो आपके पास बहुत बड़ी संख्या में मीटिंग नोट्स होने पर चलन में आ सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. कुंजी-मूल्य डेटा स्टोर में निर्देशिका पदानुक्रम संग्रहीत करना

  2. स्वचालित डेटाबेस स्वास्थ्य जांच

  3. MongoDB में $set अपडेट ऑपरेटर कैसे काम करता है

  4. MongoDB डेटा की सुरक्षा के लिए एन्क्रिप्शन का उपयोग कैसे करें

  5. डेटाबेस बनाम डेटाबेस के रूप में S3 का उपयोग करना (जैसे MongoDB)