MongoDB का उपयोग करते समय, डेटाबेस में संग्रह को सूचीबद्ध करने के एक से अधिक तरीके हैं।
MongoDB डेटाबेस में संग्रह की सूची प्राप्त करने के चार तरीके यहां दिए गए हैं:
show collectionsकमांड- द
listCollectionsकमांड - द
db.getCollectionNames()विधि - द
db.getCollectionInfos()विधि
show collections कमांड
यदि आप मोंगो शेल का उपयोग कर रहे हैं, तो संग्रहों की सूची प्राप्त करने का सबसे तेज़ तरीका show collections का उपयोग करना है आज्ञा। यह आदेश वर्तमान डेटाबेस में संग्रह और विचारों की एक सूची प्राप्त करता है।
उदाहरण:
show collections परिणाम:
employees pets pettypes products system.views
इस मामले में, पांच परिणाम हैं। हम केवल इसे देखकर नहीं बता सकते, लेकिन pettypes वास्तव में एक दृश्य है। अन्य संग्रह हैं।
system.views संग्रह एक सिस्टम संग्रह है जिसमें डेटाबेस में प्रत्येक दृश्य के बारे में जानकारी होती है।
लौटाया गया वास्तविक संग्रह आपके पहुंच स्तर पर निर्भर करेगा:
- आवश्यक पहुंच वाले उपयोगकर्ताओं के लिए,
show collectionsडेटाबेस के लिए गैर-सिस्टम संग्रहों को सूचीबद्ध करता है। - आवश्यक पहुंच के बिना उपयोगकर्ताओं के लिए,
show collectionsकेवल उन संग्रहों को सूचीबद्ध करता है जिनके लिए उपयोगकर्ताओं के पास विशेषाधिकार हैं।
द listCollections कमांड
listCollections प्रशासनिक कमांड डेटाबेस में संग्रह और विचारों का नाम और विकल्प देता है। यह जानकारी को एक दस्तावेज़ के रूप में लौटाता है।
उदाहरण:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } ) परिणाम:
{
"cursor" : {
"id" : NumberLong(0),
"ns" : "PetHotel.$cmd.listCollections",
"firstBatch" : [
{
"name" : "employees",
"type" : "collection"
},
{
"name" : "system.views",
"type" : "collection"
},
{
"name" : "pets",
"type" : "collection"
},
{
"name" : "products",
"type" : "collection"
},
{
"name" : "pettypes",
"type" : "view"
}
]
},
"ok" : 1
} दस्तावेज़ में जानकारी होती है जिसके साथ संग्रह जानकारी के लिए एक कर्सर बनाना है।
इस बार हम देख सकते हैं कि कौन से संग्रह हैं और कौन से विचार हैं।
हम इस तरह कमांड भी चला सकते हैं:
db.runCommand( { listCollections: 1.0 } )
ऐसा करने से संग्रह के बारे में बहुत अधिक जानकारी मिलती है। देखें db.getCollectionInfos() डेटा को इस तरह चलाने के दौरान लौटाए गए डेटा को देखने के लिए नीचे दिया गया उदाहरण (db.getCollectionInfos() विधि listCollections . के आसपास एक आवरण है )।
db.getCollectionNames() विधि
db.getCollectionNames() विधि वर्तमान डेटाबेस में सभी संग्रहों और दृश्यों के नाम वाली एक सरणी देता है, या यदि अभिगम नियंत्रण के साथ चल रहा है, तो उपयोगकर्ता के विशेषाधिकार के अनुसार संग्रह के नाम।
उदाहरण:
db.getCollectionNames() परिणाम:
[ "employees", "pets", "pettypes", "products", "system.views" ]
द db.getCollectionInfos() विधि
db.getCollectionInfos() विधि संग्रह के साथ दस्तावेज़ों की एक सरणी देता है या वर्तमान डेटाबेस के लिए नाम और विकल्प जैसी जानकारी देखता है। परिणाम उपयोगकर्ता के विशेषाधिकार पर निर्भर करते हैं।
यहां बिना किसी तर्क के इसे कॉल करने का एक उदाहरण दिया गया है:
db.getCollectionInfos() परिणाम:
[
{
"name" : "employees",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("07e89c25-8842-4331-a1a9-96fe0b4745dc")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
},
{
"name" : "pets",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
},
{
"name" : "pettypes",
"type" : "view",
"options" : {
"viewOn" : "pets",
"pipeline" : [
{
"$project" : {
"type" : 1
}
}
]
},
"info" : {
"readOnly" : true
}
},
{
"name" : "products",
"type" : "collection",
"options" : {
"capped" : true,
"size" : 7500544,
"max" : 7000
},
"info" : {
"readOnly" : false,
"uuid" : UUID("cb084959-f374-4f51-bbed-8998c13dcbe2")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
},
{
"name" : "system.views",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("3f458338-0678-4d0f-a0cf-eacbd43c8cad")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
}
]
db.getCollectionInfos() . की परिभाषा वास्तव में ऐसा होता है:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
तो हम filter . का उपयोग कर सकते हैं क्वेरी अभिव्यक्ति के आधार पर संग्रह की सूची को फ़िल्टर करने के लिए पैरामीटर। इसे विधि द्वारा लौटाए गए किसी भी फ़ील्ड के विरुद्ध लागू किया जा सकता है।
आप nameOnly . का भी उपयोग कर सकते हैं यह निर्दिष्ट करने के लिए पैरामीटर कि विधि केवल संग्रह और विचारों के नाम लौटाएगी।
authorizedCollections पैरामीटर, जब true . पर सेट किया जाता है और nameOnly: true . के साथ प्रयोग किया जाता है , एक्सेस नियंत्रण लागू होने पर कमांड चलाने के लिए आवश्यक विशेषाधिकार (यानी डेटाबेस पर सूची चयन क्रिया) के बिना उपयोगकर्ता को अनुमति देता है। इस मामले में, आदेश केवल उन संग्रहों को लौटाता है जिनके लिए उपयोगकर्ता के पास विशेषाधिकार हैं।
db.getCollectionInfos() using का उपयोग करने का उदाहरण इन मापदंडों के साथ:
db.getCollectionInfos( {}, true, true ) परिणाम:
[
{
"name" : "employees",
"type" : "collection"
},
{
"name" : "pets",
"type" : "collection"
},
{
"name" : "pettypes",
"type" : "view"
},
{
"name" : "products",
"type" : "collection"
},
{
"name" : "system.views",
"type" : "collection"
}
]
यहाँ एक है जहाँ मैं इसे केवल एक विशिष्ट नाम पर फ़िल्टर करता हूँ:
db.getCollectionInfos( { name: "pets" }, true, true ) परिणाम:
[ { "name" : "pets", "type" : "collection" } ] और जब मैं अंतिम दो तर्क हटाता हूं तो यह होता है:
db.getCollectionInfos( { name: "pets" } ) परिणाम:
[
{
"name" : "pets",
"type" : "collection",
"options" : {
},
"info" : {
"readOnly" : false,
"uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c")
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
}
}
]