संभावित समाधान के बारे में बात करने से पहले, मैं सिर्फ इस बात पर प्रकाश डालना चाहता हूं कि MongoDB ने चुना . क्यों चुना है? समानांतर सरणियों को अनुक्रमित करने पर इस प्रतिबंध को लागू करने के लिए। जब आप MongoDB में किसी सरणी को अनुक्रमित करते हैं, तो यह एक कुंजी प्रति सरणी तत्व के साथ एक बहु-कुंजी अनुक्रमणिका बनाता है। इसलिए, यदि आप दो सरणियों पर एक मिश्रित अनुक्रमणिका बनाते हैं, एक M विशिष्ट मान के साथ और दूसरा N विशिष्ट मानों के साथ, तो अनुक्रमणिका में अनिवार्य रूप से MN कुंजियाँ होती हैं। यह बहुत बुरा है- यह विशिष्ट सरणी तत्वों की संख्या में अरेखीय है। जब आप सरणी तत्वों को जोड़ते या हटाते हैं, तो इस तरह एक अनुक्रमणिका को बनाए रखने में लगने वाले कार्य की मात्रा पर विचार करें।
ठीक है, एक तरफ औचित्य, इस प्रतिबंध के आसपास काम करने के लिए यह वर्तमान मोंगोडीबी संस्करण (2.6) का उपयोग करने में मददगार होगा, जो इंडेक्स चौराहे का समर्थन करता है। कोई भी CustomerInformations
. पर एक इंडेक्स बना सकता है और VehicleLicenseDisks
और फिर MongoDB दोनों सूचकांकों का उपयोग कर सकता है और उन प्रश्नों को पूरा करने के लिए उन्हें प्रतिच्छेद कर सकता है जिनमें दोनों पर प्रतिबंध है।
यदि आप किसी भी कारण से, MongoDB <2.6 के साथ फंस गए हैं, तो आपके विकल्प या तो स्कीमा को फिर से डिज़ाइन करने पर विचार कर सकते हैं या उन इंडेक्स पर निर्भर हो सकते हैं जो किसी एक सरणी फ़ील्ड का उपयोग करते हैं।