MongoDB के पुराने संस्करणों में, आप db.collection.copyTo()
. का उपयोग कर सकते थे संग्रह को कॉपी करने की विधि।
मोंगोडीबी ने तब से उस विधि को बहिष्कृत कर दिया है। साथ ही, संस्करण 4.2 से शुरू होकर, MongoDB ने eval
. को हटा दिया है आज्ञा। दिए गए db.collection.copyTo()
लपेटता है eval
, इसका मतलब है कि यदि आप MongoDB 4.2 या बाद के संस्करण का उपयोग कर रहे हैं तो आप उनमें से किसी का भी उपयोग नहीं कर सकते।
सौभाग्य से, MongoDB संग्रह को कॉपी करने का एक और तरीका है।
MongoDB डेटाबेस टूल के लिए जाँच करें
MongoDB में, आप MongoDB डेटाबेस टूल्स का उपयोग करके संग्रह को क्लोन कर सकते हैं। विशेष रूप से, आप mongodump
. का उपयोग कर सकते हैं और mongorestore
.
MongoDB डेटाबेस टूल्स MongoDB के साथ काम करने के लिए कमांड-लाइन उपयोगिताओं का एक सूट है।
यदि आप सुनिश्चित नहीं हैं कि आपके पास MongoDB डेटाबेस उपकरण स्थापित है या नहीं, तो जाँच करने के लिए अपने टर्मिनल या कमांड प्रॉम्प्ट में निम्न कमांड चलाकर देखें:
mongodump --version
mongorestore --version
यह विशेष रूप से mongodump
. की जांच करता है और mongorestore
संस्करण।
यदि आपके पास ये नहीं हैं, तो आप अपने सिस्टम पर MongoDB डेटाबेस टूल्स को स्थापित करने के लिए MongoDB वेबसाइट पर इंस्टॉलेशन निर्देशों का उपयोग कर सकते हैं।
एक संग्रह को समान डेटाबेस में क्लोन करें
आपको mongodump
चलाने की जरूरत है और mongorestore
आपके सिस्टम की कमांड लाइन से (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो)। इसे mongo
. से न चलाएं सीप।
यहां कोड का एक उदाहरण दिया गया है जो एक संग्रह को उसी डेटाबेस में क्लोन करता है:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'
इस मामले में, हम pets
. का बैकअप लेते हैं PetHotel
. में संग्रह डेटाबेस, फिर इसे pets2
. के रूप में पुनर्स्थापित करें एक ही डेटाबेस में।
यह mongodump
. का उपयोग करता है संग्रह की बैकअप फ़ाइल बनाने के लिए, फिर mongorestore
उस संग्रह को किसी भिन्न नाम से पुनर्स्थापित करने के लिए। हमने संग्रह को मानक आउटपुट स्ट्रीम में डंप करके और mongorestore
में पाइप करके ऐसा किया। ।
यहां बताया गया है कि प्रत्येक पैरामीटर क्या करता है:
पैरामीटर | <थ>विवरण|
---|---|
--archive | एक निर्दिष्ट संग्रह फ़ाइल में आउटपुट लिखता है या, यदि संग्रह फ़ाइल अनिर्दिष्ट है, तो मानक आउटपुट (stdout ) को लिखता है ) हमारे मामले में, संग्रह फ़ाइल अनिर्दिष्ट है, इसलिए उसने मानक आउटपुट को लिखा। |
--db | उस डेटाबेस को निर्दिष्ट करता है जिसमें वह संग्रह होता है जिसे हम क्लोन करना चाहते हैं। इस मामले में, डेटाबेस को PetHotel . कहा जाता है । |
--nsFrom | डंप फ़ाइल में संग्रह को निर्दिष्ट करता है। यह वह संग्रह है जिसे हम क्लोन करना चाहते हैं। |
--nsTo | संग्रह नाम निर्दिष्ट करता है जिसे पुनर्स्थापित करते समय उपयोग किया जाना चाहिए। हमारे मामले में, हम इसे pets2 . कहते हैं . |
किसी संग्रह को दूसरे डेटाबेस में कॉपी करें
संग्रह को दूसरे डेटाबेस में कॉपी करने के लिए आप उसी तकनीक का उपयोग कर सकते हैं। इस मामले में, यदि आप नहीं चाहते हैं तो आपको संग्रह का नाम बदलने की भी आवश्यकता नहीं होगी।
यहां एक उदाहरण दिया गया है:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'
यह पिछले उदाहरण के समान ही है, सिवाय इसके कि हमारा --nsTo
तर्क निर्दिष्ट करता है PetHouse.pets
गंतव्य संग्रह के रूप में।
इसका मतलब है कि क्लोन किए गए संग्रह को pets
. कहा जाएगा , और यह PetHouse
. में स्थित होगा डेटाबेस (मूल PetHotel
के बजाय) डेटाबेस)।