यदि आपके पास MongoDB डेटाबेस में एक दृश्य है कि आप एक संग्रह बनना पसंद करेंगे, तो आप सही जगह पर हैं।
नीचे MongoDB में एक दृश्य को एक संग्रह में बदलने का एक उदाहरण है।
उदाहरण
यह उदाहरण दर्शाता है कि MongoDB डेटाबेस टूल्स mongodump
का उपयोग करके किसी दृश्य को संग्रह में कैसे परिवर्तित किया जाए और mongorestore
।
यदि आपके पास ये उपकरण स्थापित नहीं हैं, तो MongoDB स्थापना मार्गदर्शिका देखें।
एक दृश्य ढूंढें
सबसे पहले, वर्तमान डेटाबेस में विचारों और संग्रहों पर एक नज़र डालते हैं:
show collections
परिणाम:
employees owners pets system.views v_pettypes
इस मामले में, v_pettypes
वास्तव में एक दृश्य है।
हम निम्न क्वेरी के साथ सत्यापित कर सकते हैं कि यह एक दृश्य है:
db.getCollectionInfos( { "name": "v_pettypes"} )
परिणाम:
[ { "name" : "v_pettypes", "type" : "view", "options" : { "viewOn" : "pets", "pipeline" : [ { "$group" : { "_id" : "$type" } } ] }, "info" : { "readOnly" : true } } ]
हम जानते हैं कि यह एक दृश्य है क्योंकि type
फ़ील्ड का मान view
. है ।
दृश्य को संग्रह में बदलें
अब हम आगे बढ़ सकते हैं और उस दृश्य को एक संग्रह में बदल सकते हैं। हम इसे MongoDB डेटाबेस टूल्स mongodump
. के साथ कर सकते हैं और mongorestore
।
हम mongodump
. का उपयोग करेंगे दृश्य निर्यात करने के लिए, और mongorestore
इसे बहाल करने के लिए। विशेष रूप से, हम mongodump
को पाइप करेंगे आउटपुट स्ट्रीम mongorestore
. में . इस तरह हम एक ही बार में सारा काम कर सकते हैं।
यह रहा कोड:
mongodump --archive --db=PetHotel --collection=v_pettypes --viewsAsCollections | mongorestore --archive --nsFrom='PetHotel.v_pettypes' --nsTo='PetHotel.pettypes'
आपको उस कोड को अपने सिस्टम की कमांड लाइन (जैसे एक नया टर्मिनल या कमांड प्रॉम्प्ट विंडो) से चलाने की आवश्यकता है। इसे mongo
. से न चलाएं सीप।
उस कोड को चलाने से v_pettypes
. रूपांतरित हो गया pettypes
. नामक संग्रह को देखें एक ही डेटाबेस में।
कड़ाई से बोलते हुए, हमने वास्तव में रूपांतरित नहीं किया था एक संग्रह के लिए दृश्य। हमने केवल --viewsAsCollections
. का उपयोग किया है दृश्य को संग्रह के रूप में डंप करने के लिए तर्क, फिर हमने उस संग्रह को डेटाबेस में वापस बहाल कर दिया। इसलिए मूल दृश्य अभी भी मौजूद है।
जब आप किसी दृश्य को संग्रह के रूप में निर्यात करते हैं, mongodump
दृश्य में दस्तावेज़ों वाली एक बीएसओएन फ़ाइल तैयार करता है। अगर आप mongorestore
का इस्तेमाल करते हैं उत्पादित बीएसओएन फ़ाइल को पुनर्स्थापित करने के लिए, दृश्य को संग्रह के रूप में पुनर्स्थापित किया जाएगा।
--viewsAsCollections
का उपयोग किए बिना तर्क, mongodump
प्रत्येक दृश्य के मेटाडेटा को निर्यात करता है। अगर आप किसी दृश्य की मेटाडेटा फ़ाइल को mongorestore
. में शामिल करते हैं ऑपरेशन, दृश्य फिर से बनाया गया है।
--viewsAsCollections
का उपयोग करना सभी मानक संग्रहों को भी छोड़ देता है।
परिणाम जांचें
आइए हमारे विचारों और संग्रहों पर एक और नज़र डालें।
show collections
परिणाम:
employees owners pets pettypes system.views v_pettypes
तो हम देख सकते हैं कि एक नया संग्रह pettypes
. कहा जाता है मौजूद है, और मूल दृश्य अभी भी मौजूद है।
हम सत्यापित कर सकते हैं कि pettypes
एक संग्रह है (और दृश्य नहीं) इस प्रकार है:
db.getCollectionInfos( { "name": "pettypes"} )
परिणाम:
[ { "name" : "pettypes", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("d183c7e4-44bc-4656-b272-7ad707f8dc62") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]
हम देख सकते हैं कि type
फ़ील्ड में collection
. का मान होता है , जिसका अर्थ है कि यह एक संग्रह है।
मूल दृश्य छोड़ें
इस स्तर पर अब हमारे पास मूल दृश्य को हटाने या उसे वहीं छोड़ने का विकल्प है।
हम इसे इस तरह छोड़ सकते हैं:
db.v_pettypes.drop()
अब अगर हम संग्रहों की जाँच करते हैं, तो हम देख सकते हैं कि मूल दृश्य चला गया है और नया संग्रह बना हुआ है।
show collections
परिणाम:
employees owners pets pettypes system.views