मैं मोंगोडीबी का उपयोग बैक एंड एंड मोंगोमैपर के रूप में ओआरएम उपकरण के रूप में एक रेल एप्लिकेशन बना रहा हूं। संस्करण 1 में मान लीजिए, मैं निम्नलिखित मॉडल को परिभाषित:मोंगोमैपर और माइग्रेशन
class SomeModel
include MongoMapper::Document
key :some_key, String
end
संस्करण 2 में बाद में, मुझे लगता है मैं मॉडल पर एक नया आवश्यक कुंजी की आवश्यकता है। तो, संस्करण 2 में, SomeModel अब इस तरह दिखता है:
class SomeModel
include MongoMapper::Document
key :some_key, String
key :some_new_key, String, :required => true
end
मैं अपने सभी मौजूदा डेटा कैसे माइग्रेट some_new_key शामिल करने के लिए करते हैं? मान लें कि मुझे पता है कि सभी मौजूदा दस्तावेज़ों के लिए उचित डिफ़ॉल्ट मान कैसे सेट करें। इसे एक कदम आगे लेते हुए, मान लीजिए कि संस्करण 3 में, मुझे एहसास हुआ कि मुझे वास्तव में कुछ_की की आवश्यकता नहीं है। तो, अब मॉडल इस
class SomeModel
include MongoMapper::Document
key :some_new_key, String, :required => true
end
लेकिन मेरे डेटाबेस में सभी मौजूदा रिकॉर्ड some_key के लिए मान सेट है की तरह लग रहा है, और यह सिर्फ इस बिंदु पर अंतरिक्ष बर्बाद कर रहा है। मैं उस जगह को पुनः प्राप्त कैसे करूं?
ActiveRecord के साथ, मैंने कुछ_new_key (संस्करण 1 -> संस्करण 2 माइग्रेशन में) के प्रारंभिक मान जोड़ने और कुछ_key (संस्करण 2 -> संस्करण 3 माइग्रेशन में) के मानों को हटाने के लिए माइग्रेशन बनाए हैं।
MongoDB/MongoMapper के साथ ऐसा करने का उचित तरीका क्या है? ऐसा लगता है कि माइग्रेशन चलाने के कुछ तरीकों को अभी भी जरूरी है। क्या ऐसी किसी वस्तु का अस्तित्व है?
संपादित किया गया: मुझे लगता है कि लोग मेरे प्रश्न का बिंदु खो रहे हैं। ऐसे समय होते हैं जहां आप डेटा को बदलने या पुन: स्थापित करने के लिए डेटाबेस पर एक स्क्रिप्ट चलाने में सक्षम होना चाहते हैं। मैंने उपरोक्त दो उदाहरण दिए, एक जहां एक नई आवश्यक कुंजी जोड़ा गया था और एक जहां एक कुंजी को हटाया जा सकता है और अंतरिक्ष को पुनः दावा किया जा सकता है। आप इन स्क्रिप्ट को चलाने का प्रबंधन कैसे करते हैं? ActiveRecord माइग्रेशन आपको इन स्क्रिप्ट को चलाने और यह निर्धारित करने के लिए एक आसान तरीका प्रदान करता है कि कौन सी स्क्रिप्ट पहले ही चल चुकी हैं और कौन सी स्क्रिप्ट नहीं चल रही हैं। मैं स्पष्ट रूप से एक मोंगो स्क्रिप्ट लिख सकता हूं जो डेटाबेस पर कोई अपडेट करता है, लेकिन जो मैं खोज रहा हूं वह माइग्रेशन की तरह एक ढांचा है जो मुझे ट्रैक करने देता है कि कौन सी अपग्रेड स्क्रिप्ट पहले ही चल चुकी है।
मुझे लगता है कि मोंगो (/ मैपर) इस तरह की चीज़ के लिए बहुत ही युवा हो सकता है। :/ – Konklone
स्कीमा के मामले में माइग्रेशन वास्तव में मोंगो डीबी में उचित अवधारणा नहीं है क्योंकि मोंगो डीबी में वास्तव में कोई स्कीमा नहीं है। आपको केवल डेटा माइग्रेशन स्क्रिप्ट लिखना होगा। – zsong