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

MongoDB में एक संग्रह कॉपी/क्लोन करें

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 के बजाय) डेटाबेस)।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB वर्तमान उपयोगकर्ता दिखाएं

  2. mongoDB में स्ट्रिंग फ़ील्ड मान लंबाई

  3. मोंगोडब $लुकअप गतिशील संग्रह

  4. मोंगो जावा ड्राइवर से db.Collection.stats () को कैसे कॉल करें?

  5. मोंगो और उल्का में प्रोग्रामेटिक रूप से फ़ील्ड अपडेट करना