Wanneer u MongoDB gebruikt, is er meer dan één manier om de collecties in een database weer te geven.
Hier zijn vier manieren om een lijst met collecties in een MongoDB-database te krijgen:
- De
show collections
Commando - De
listCollections
Commando - De
db.getCollectionNames()
Methode - De
db.getCollectionInfos()
Methode
De show collections
Commando
Als je de mongo-shell gebruikt, is de snelste manier om een lijst met collecties te krijgen het gebruik van de show collections
opdracht. Deze opdracht haalt een lijst op met verzamelingen en weergaven in de huidige database.
Voorbeeld:
show collections
Resultaat:
employees pets pettypes products system.views
In dit geval zijn er vijf resultaten. We kunnen het niet alleen zien door ernaar te kijken, maar pettypes
is eigenlijk een uitzicht. De andere zijn verzamelingen.
De system.views
verzameling is een systeemverzameling die informatie bevat over elke weergave in de database.
De daadwerkelijk geretourneerde collecties zijn afhankelijk van uw toegangsniveau:
- Voor gebruikers met de vereiste toegang:
show collections
geeft de niet-systeemverzamelingen voor de database weer. - Voor gebruikers zonder de vereiste toegang:
show collections
geeft alleen de collecties weer waarvoor de gebruikers privileges hebben.
De listCollections
Commando
De listCollections
administratieve opdracht retourneert de naam en opties van verzamelingen en weergaven in de database. Het geeft de informatie terug in de vorm van een document.
Voorbeeld:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Resultaat:
{ "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 }
Het document bevat informatie waarmee een cursor naar de collectie-informatie kan worden gemaakt.
Deze keer kunnen we zien welke collecties zijn en welke views.
We kunnen de opdracht ook als volgt uitvoeren:
db.runCommand( { listCollections: 1.0 } )
Hierdoor krijg je veel meer informatie over de collecties. Zie de db.getCollectionInfos()
voorbeeld hieronder om de gegevens te zien die worden geretourneerd wanneer het zo wordt uitgevoerd (de db.getCollectionInfos()
methode is een wrapper rond listCollections
).
De db.getCollectionNames()
Methode
De db.getCollectionNames()
methode retourneert een array met de namen van alle collecties en views in de huidige database, of, indien uitgevoerd met toegangsbeheer, de namen van de collecties volgens het privilege van de gebruiker.
Voorbeeld:
db.getCollectionNames()
Resultaat:
[ "employees", "pets", "pettypes", "products", "system.views" ]
De db.getCollectionInfos()
Methode
De db.getCollectionInfos()
methode retourneert een reeks documenten met verzamel- of weergave-informatie, zoals naam en opties, voor de huidige database. De resultaten zijn afhankelijk van het privilege van de gebruiker.
Hier is een voorbeeld om het zonder argumenten aan te roepen:
db.getCollectionInfos()
Resultaat:
[ { "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_" } } ]
De definitie van db.getCollectionInfos()
gaat eigenlijk zo:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Dus we kunnen het filter
. gebruiken parameter om de lijst met collecties te filteren op basis van een query-expressie. Dit kan worden toegepast op elk veld dat door de methode wordt geretourneerd.
U kunt ook de nameOnly
. gebruiken parameter om aan te geven dat de methode alleen de namen van de collecties en views moet retourneren.
De authorizedCollections
parameter, indien ingesteld op true
en gebruikt met nameOnly: true
, staat een gebruiker zonder het vereiste privilege (d.w.z. listCollections-actie op de database) toe om de opdracht uit te voeren wanneer toegangsbeheer wordt afgedwongen. In dit geval retourneert het commando alleen die collecties waarvoor de gebruiker privileges heeft.
Voorbeeld van het gebruik van db.getCollectionInfos()
met deze parameters:
db.getCollectionInfos( {}, true, true )
Resultaat:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Hier is er een waar ik het filter op een specifieke naam:
db.getCollectionInfos( { name: "pets" }, true, true )
Resultaat:
[ { "name" : "pets", "type" : "collection" } ]
En dit is wat er gebeurt als ik de laatste twee argumenten verwijder:
db.getCollectionInfos( { name: "pets" } )
Resultaat:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]