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

MongoDB में डेटाबेस और संग्रह कैसे प्रबंधित करें


परिचय

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

इस गाइड में, हम बात करेंगे कि डेटा को व्यवस्थित करने के लिए MongoDB द्वारा उपयोग की जाने वाली संरचनाओं को कैसे बनाया और प्रबंधित किया जाए। हम कवर करेंगे कि डेटाबेस कैसे बनाएं और प्रबंधित करें और फिर समान या संबंधित दस्तावेज़ों को रखने के लिए संग्रह कैसे करें।



मौजूदा डेटाबेस कैसे देखें

इससे पहले कि हम नए डेटाबेस बनाना शुरू करें, कुछ तरीकों से परिचित होना मददगार है जो MongoDB मौजूदा डेटाबेस के बारे में जानकारी खोजने के लिए प्रदान करता है। इससे आपको बदलाव शुरू करने से पहले सिस्टम की वर्तमान स्थिति को समझने में मदद मिल सकती है।

सिस्टम पर सभी डेटाबेस प्रदर्शित करने के लिए, जिस तक आपकी पहुंच है, show dbs का उपयोग करें विधि:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

MongoDB सिस्टम पर सभी सुलभ डेटाबेस के नामों के साथ-साथ उनके वर्तमान संग्रहण स्थान के सारांश के साथ प्रतिक्रिया करेगा।

यह देखने के लिए कि आप वर्तमान में किस डेटाबेस पर काम करने के लिए तैयार हैं, db.getName() . का उपयोग करें कमांड या उसका शॉर्टहैंड उपनाम, db :

db
test

आप पा सकते हैं कि आप वर्तमान में एक ऐसे डेटाबेस का उपयोग कर रहे हैं जो show dbs . द्वारा सूचीबद्ध नहीं था आज्ञा। ऐसा इसलिए है क्योंकि MongoDB में, जब तक आप डेटाबेस में पहला दस्तावेज़ नहीं लिखते हैं, तब तक डेटाबेस वास्तव में नहीं बनाया जाता है। तो, ऊपर दिए गए उदाहरण आउटपुट में, शेल को test . पर संचालित करने के लिए तैयार किया गया है डेटाबेस, लेकिन चूंकि यह अभी तक मौजूद नहीं है, इसलिए इसे show dbs . द्वारा वापस नहीं किया जाएगा आदेश।

किसी भिन्न डेटाबेस में स्विच करने के लिए, आप use . का उपयोग कर सकते हैं आदेश:

use admin
switched to db admin

अपने वर्तमान डेटाबेस के बारे में कुछ बुनियादी जानकारी प्राप्त करने के लिए, आप db.stats() . का उपयोग कर सकते हैं विधि:

db.stats()
{        "db" : "admin",        "collections" : 3,        "views" : 0,        "objects" : 4,        "avgObjSize" : 278.25,        "dataSize" : 1113,        "storageSize" : 86016,        "indexes" : 5,        "indexSize" : 147456,        "totalSize" : 233472,        "scaleFactor" : 1,        "fsUsedSize" : 2876923904,        "fsTotalSize" : 25832407040,        "ok" : 1}

आउटपुट डेटाबेस के भीतर संग्रह की संख्या, भंडारण सांख्यिकी, अनुक्रमणिका जानकारी, और बहुत कुछ के बारे में जानकारी दिखाता है।



डेटाबेस कैसे बनाएं

MongoDB के पास नया डेटाबेस बनाने के लिए कोई स्पष्ट आदेश नहीं है। इसके बजाय, जैसा कि पहले उल्लेख किया गया है, आपको इसके बजाय MongoDB को इंगित करना होगा कि आप एक नए डेटाबेस में नए दस्तावेज़ लिखना चाहते हैं। जब वे दस्तावेज़ बनाए जाते हैं, तो वे परोक्ष रूप से डेटाबेस बनाएंगे।

MongoDB को नए डेटाबेस में लिखने के लिए तैयार करने के लिए, use जारी करें गैर-मौजूद डेटाबेस पर स्विच करने का आदेश।

यहां, हम playground . नामक एक नया डेटाबेस बनाने के लिए MongoDB की स्थापना करेंगे :

use playground
switched to db playground

यदि आप अपने वर्तमान डेटाबेस की जांच करते हैं, तो यह पुष्टि करेगा कि playground डेटाबेस वर्तमान में डेटाबेस से संबंधित कमांड का लक्ष्य है:

db
playground

हालाँकि, जैसा कि पहले उल्लेख किया गया है, चूंकि हमने अभी तक कोई दस्तावेज़ नहीं बनाया है, इसलिए डेटाबेस अभी तक नहीं बनाया गया है:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

वास्तव में नया डेटाबेस बनाने के लिए, हमें पहले कुछ बनाना होगा।



डेटाबेस में संग्रह कैसे देखें

MongoDB में, संग्रह आप जिस भी वर्गीकरण प्रणाली को लागू करना चाहते हैं, उसका उपयोग करके दस्तावेज़ों को समूहबद्ध करने के लिए उपयोग की जाने वाली संरचनाएं हैं। वे डेटाबेस के अंदर रहते हैं और दस्तावेज़ों को संग्रहीत करते हैं।

show collections . का उपयोग करके आप वर्तमान में उपयोग किए जा रहे डेटाबेस में उपलब्ध संग्रह देख सकते हैं विधि।

यहां, हम admin . पर स्विच करेंगे डेटाबेस जिसमें प्रदर्शित करने के लिए कुछ संग्रह उपलब्ध हैं:

use adminshow collections
system.rolessystem.userssystem.version

वैकल्पिक रूप से, आप db.getCollectionNames() . का उपयोग करके सरणी में समान संग्रह नामों को पुनः प्राप्त कर सकते हैं विधि:

db.getCollectionNames()
[ "system.roles", "system.users", "system.version" ]

वर्तमान डेटाबेस में संग्रह के बारे में अतिरिक्त जानकारी दिखाने के लिए, db.getCollectionInfos() का उपयोग करें विधि:

db.getCollectionInfos()
[        {                "name" : "system.roles",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("776b1fd7-6014-4191-b33c-21350b590627")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.users",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("8c824fd1-2150-4413-8fac-0b77d16505e5")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        },        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

आप परिणामों को फ़िल्टर करने के लिए वैकल्पिक रूप से किसी दस्तावेज़ में कमांड को पास भी कर सकते हैं। उदाहरण के लिए, यदि आप केवल system.version . के बारे में जानकारी देखने में रुचि रखते हैं संग्रह, आप टाइप कर सकते हैं:

db.getCollectionInfos(    {        name: "system.version"    })
[        {                "name" : "system.version",                "type" : "collection",                "options" : {                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("7501483a-45cc-492e-a1fd-ccb4349650cb")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]

किसी संग्रह में कितने दस्तावेज़ हैं, यह जाँचने के लिए db.<collection>.count() . का उपयोग करें तरीका। उदाहरण के लिए, निम्न कमांड जाँचता है कि system.users . में कितने दस्तावेज़ हैं संग्रह:

db.system.users.count()
2

मौजूदा डेटाबेस में संग्रह के बारे में बुनियादी आंकड़े देखने के लिए, db.printCollectionStats() का उपयोग करें विधि:

db.printCollectionStats()

कमांड आपके द्वारा आसानी से उपभोग की जाने वाली जानकारी से अधिक जानकारी आउटपुट कर सकता है, लेकिन इसमें शामिल है, लेकिन कुछ परिदृश्यों में सहायक होता है जहां आपको संग्रह की विशेषताओं पर गहराई से विचार करने की आवश्यकता होती है।



संग्रह कैसे बनाएं

एक नया संग्रह बनाने के लिए, दो विकल्प हैं:आप या तो परोक्ष रूप से या स्पष्ट रूप से संग्रह बना सकते हैं।

डेटाबेस के साथ के रूप में, MongoDB स्वचालित रूप से संग्रह बना सकता है जब पहली बार उन्हें कोई दस्तावेज़ लिखा जाता है। यह विधि MongoDB को एक ऐसे संग्रह में एक दस्तावेज़ सम्मिलित करके एक नया संग्रह बनाने के लिए कहती है जो अभी तक मौजूद नहीं है।

उदाहरण के लिए, हम वापस playground में बदल सकते हैं डेटाबेस जिसमें हम पहले रुचि रखते थे। एक बार जब हम उस नाम स्थान में पहुंच जाते हैं, तो हम insert.() को कॉल करके संग्रह में एक नया दस्तावेज़ सम्मिलित कर सकते हैं। उस नाम पर कमांड करें जिसे हम नए संग्रह के लिए उपयोग करना चाहते हैं। यहां, हम equipment . नामक नए संग्रह में स्लाइड के बारे में एक दस्तावेज़ बना सकते हैं :

use playgrounddb.equipment.insert({name: "slide"})
switched to db playgroundWriteResult({ "nInserted" : 1 })

आउटपुट इंगित करता है कि एक दस्तावेज़ लिखा गया था। उपरोक्त आदेश ने तीन अलग-अलग क्रियाएं कीं। सबसे पहले, MongoDB ने playground बनाया डेटाबेस जिसे हमने अपने use . में संदर्भित किया था आज्ञा। इसने equipment . भी बनाया डेटाबेस के भीतर संग्रह क्योंकि हम insert() . कहते हैं उस संग्रह नाम पर आदेश। अंत में, यह equipment . के भीतर वास्तविक दस्तावेज़ बनाता है हमारे द्वारा प्रदान किए गए इनपुट का उपयोग करके संग्रह insert() आदेश।

आप सत्यापित कर सकते हैं कि ये सभी क्रियाएं निम्नलिखित आदेशों के साथ की गई हैं:

show dbsshow collectionsdb.equipment.count()db.equipment.find()

आउटपुट को दिखाना चाहिए कि playground डेटाबेस अब सूचीबद्ध डेटाबेस में से है, कि equipment संग्रह सूचीबद्ध है, कि equipment . के भीतर एक दस्तावेज़ है संग्रह, और यह कि दस्तावेज़ {name: "slide"} . है दस्तावेज़ हमने कमांड में डाला है।

संग्रह बनाने के लिए उपयोग करने का दूसरा विकल्प स्पष्ट रूप से db.createCollection() . का उपयोग करना है तरीका। यह आपको उनमें कोई दस्तावेज़ जोड़े बिना संग्रह बनाने की अनुमति देता है।

उदाहरण के लिए, आप playground . में एक नया संग्रह बना सकते हैं डेटाबेस जिसे maintenance.requests . कहा जाता है टाइप करके:

db.createCollection("maintenance.requests")
{ "ok" : 1 }

हम यह सत्यापित कर सकते हैं कि जब हम इसके लिए पूछताछ करते हैं तो नया संग्रह दिखाई देता है, लेकिन उसके पास कोई दस्तावेज़ नहीं है:

show collectionsdb.maintenance.requests.count()
equipmentmaintenance.requests0

db.createCollection() विधि मुख्य रूप से उपयोगी है क्योंकि यह आपको सृजन पर विभिन्न विकल्पों को निर्दिष्ट करने की अनुमति देती है। उदाहरण के लिए, हम एक कैप्ड संग्रह . बनाना चाहते हैं , जो एक संग्रह है जो अपने आवंटित आकार की ऊपरी सीमा को बनाए रखता है, जब यह अपने सबसे पुराने दस्तावेज़ को पूर्ण होने पर हटा देता है।

एक कैप्ड संग्रह बनाने के लिए जिसे notifications . कहा जाता है जो अधिकतम 10240 बाइट्स की जानकारी संग्रहीत कर सकता है, जिसे आप कॉल कर सकते हैं:

db.createCollection(    "notifications",    {        capped: true,        size: 10240    })
{ "ok" : 1}

यह एक कैप्ड notification create बनाएगा संग्रह, जिसे हम टाइप करके सत्यापित कर सकते हैं:

db.getCollecitonInfos({"options.capped": true})
[        {                "name" : "notifications",                "type" : "collection",                "options" : {                        "capped" : true,                        "size" : 10240                },                "info" : {                        "readOnly" : false,                        "uuid" : UUID("dff7bfb0-1cfc-4170-ba60-fbb834ac6925")                },                "idIndex" : {                        "v" : 2,                        "key" : {                                "_id" : 1                        },                        "name" : "_id_"                }        }]


संग्रह कैसे हटाएं

किसी संग्रह को हटाने के लिए, आप drop() . का उपयोग कर सकते हैं संग्रह पर ही विधि।

उदाहरण के लिए, कैप्ड notifications को छोड़ने के लिए हमारे द्वारा बनाया गया संग्रह, आप टाइप कर सकते हैं:

db.notifications.drop()
true

आप वर्तमान डेटाबेस में संग्रहों को फिर से सूचीबद्ध करके यह सत्यापित कर सकते हैं कि ऑपरेशन सफल रहा:

show collections
equipmentmaintenance.requests


डेटाबेस कैसे हटाएं

संपूर्ण डेटाबेस को हटाने के लिए, db.dropDatabase() . पर कॉल करें आज्ञा। यह वर्तमान डेटाबेस को हटा देगा, इसलिए सुनिश्चित करें कि निष्पादित करने से पहले आप सही डेटाबेस पर हैं:

use playgrounddb.dropDatabase()
switched to db playground{ "dropped" : "playground", "ok" : 1 }

यदि आप उपलब्ध डेटाबेस की सूची की जाँच करते हैं, playground अब प्रदर्शित नहीं होता:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

चूंकि हमने अभी तक एक नए डेटाबेस पर स्विच नहीं किया है, MongoDB अभी भी एक playground बनाने के लिए सेट है डेटाबेस क्या हमें एक नया संग्रह या दस्तावेज़ जोड़ने का चयन करना चाहिए। आप इसे db . से सत्यापित कर सकते हैं आदेश:

db
playground


निष्कर्ष

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




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. आईडी की सूची को देखते हुए, संग्रह में कौन सी आईडी मौजूद नहीं है, यह पूछने का सबसे अच्छा तरीका क्या है?

  2. मोंगोडीबी इंडेक्स को समझना

  3. मोंगो सभी संख्यात्मक क्षेत्रों को परिवर्तित करता है जो स्ट्रिंग के रूप में संग्रहीत होते हैं

  4. मोंगोडब / नेवला में आंशिक अनुक्रमणिका

  5. एक ही दस्तावेज़ में फ़ील्ड के साथ Mongodb क्वेरी