2011-09-23 15 views
5

के साथ संगत होने के लिए हम C# के साथ mongodb का उपयोग कर रहे हैं। हम अपने संग्रह को निरंतर निरंतर रखने के लिए एक तरीका जानने का प्रयास कर रहे हैं। अभी, यदि कोई डेवलपर वर्ग संरचना में कोई परिवर्तन करता है (कोई फ़ील्ड जोड़ें या डेटा प्रकार बदलें या नेस्टेड क्लास में संपत्ति बदल रहा है) तो उसे मैन्युअल रूप से मोंगो संग्रह को बदलना होगा।कक्षा संरचना में बदलावों को प्रबंधित करना mongodb संग्रह

यह एक दर्द है क्योंकि हमारी परियोजना बढ़ रही है और परियोजना पर काम कर रहे डेवलपर्स बढ़ते रहते हैं। यह सोच रहा था कि किसी ने पहले से ही इस मुद्दे को प्रबंधित करने का तरीका निकाला है या नहीं।

  • रिसर्च
    1. मैं एक similar question पाया। हालांकि, समाधान नहीं मिला।
    2. सभी गुणों को खोजने का एक तरीका मिला Finding the properties; हालांकि, डेटाटाइप और नेस्टेड दस्तावेज़ एक मुद्दा बन जाते हैं।
+0

मुझे यकीन नहीं है कि मैं समझता हूं: एक मोंगो संग्रह में दस्तावेज़ अलग-अलग हो सकते हैं, इसलिए नए दस्तावेज़ों को मौजूदा संग्रह में धक्का देने से आपको रोक नहीं है, भले ही नए दस्तावेज़ अद्यतन कक्षाओं के उदाहरणों पर आधारित हों। या यह मुद्दा है कि आप डीबी में मौजूदा दस्तावेजों को पैच करना चाहते हैं? एक और बात: क्या विकास मशीन, या उत्पादन प्रणाली के साथ मुद्दा है? –

+3

@ क्रिस्टियन हॉर्सडल: आप सही हैं। नए दस्तावेजों को सम्मिलित करने के लिए हमें कुछ भी नहीं रोक रहा है, हालांकि, जब हम दस्तावेजों को पुनर्प्राप्त करते हैं तो धारावाहिक अपवाद फेंक देगा। अगर वर्कअराउंड उपलब्ध है, तो हम अतिरिक्त तत्वों को अनदेखा करने या किसी अन्य बीएसओएन दस्तावेज़ में अतिरिक्त तत्व एकत्र करने के लिए निर्दिष्ट करते हैं। यह बीएसओएन धारावाहिक में किया जा सकता है। लेकिन हम किसी प्रकार की प्री-बिल्ड स्क्रिप्ट की तलाश में थे जो डेवलपर को बदलाव करने के लिए चेतावनी देगा – Paul

उत्तर

1

आप धीरे-धीरे विस्थापित करने के लिए के रूप में रिकॉर्ड एक्सेस किया जाता है आप कुछ सरल नियमों का पालन करना चाहते हैं:

1) यदि आप एक क्षेत्र यह बेहतर था व्यर्थ हो जोड़ने के लिए या निर्दिष्ट कोई डिफ़ॉल्ट मान है, तो ।

2) कभी भी फ़ील्ड का नाम बदलें, फ़ील्ड प्रकारों को कभी भी बदलें
- इसके बजाय हमेशा नए फ़ील्ड जोड़ें, माइग्रेशन कोड जोड़ें, केवल पुराने फ़ील्ड को हटा दें जब सभी दस्तावेज़ माइग्रेट हो जाएं।

साथ MongoDB और सी # प्रोटोटाइप के लिए मैं एक dynamic wrapper ... कि आप केवल इंटरफेस (जरूरत नहीं वर्ग) का उपयोग कर अपने वस्तुओं निर्दिष्ट कर सकते हैं का निर्माण, और यह आप गतिशील रूप से किसी मौजूदा ऑब्जेक्ट के लिए नए इंटरफेस जोड़ सकते हैं। उत्पादन के उपयोग के लिए तैयार नहीं है लेकिन प्रोटोटाइप के लिए यह बहुत सारे प्रयासों को बचाता है और माइग्रेशन को वास्तव में आसान बनाता है।

+0

इस उत्तर के लिए धन्यवाद मैंने बीसन डीफॉल्ट वैल्यूएट्रिब्यूट की खोज की जो ऊपर की सिफारिश के लिए आवश्यक है! – kingdango

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