Når du bruger MongoDB, er der mere end én måde at liste samlingerne i en database på.
Her er fire måder at få en liste over samlinger i en MongoDB-database på:
show collections
KommandolistCollections
Kommandodb.getCollectionNames()
Metodedb.getCollectionInfos()
Metode
show collections
Kommando
Hvis du bruger mongo-skallen, er den hurtigste måde at få en liste over samlinger på at bruge show collections
kommando. Denne kommando henter en liste over samlinger og visninger i den aktuelle database.
Eksempel:
show collections
Resultat:
employees pets pettypes products system.views
I dette tilfælde er der fem resultater. Vi kan ikke bare se på det, men pettypes
er faktisk en udsigt. De andre er samlinger.
system.views
samling er en systemsamling, der indeholder information om hver visning i databasen.
De faktiske returnerede samlinger afhænger af dit adgangsniveau:
- For brugere med den nødvendige adgang,
show collections
viser ikke-systemsamlingerne for databasen. - For brugere uden den nødvendige adgang,
show collections
viser kun de samlinger, som brugerne har privilegier til.
listCollections
Kommando
listCollections
administrativ kommando returnerer navnet og mulighederne for samlinger og visninger i databasen. Det returnerer oplysningerne i form af et dokument.
Eksempel:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Resultat:
{ "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 }
Dokumentet indeholder information, som du kan bruge til at oprette en markør til samlingsinformationen.
Denne gang kan vi se, hvilke der er samlinger, og hvilke der er visninger.
Vi kan også køre kommandoen sådan her:
db.runCommand( { listCollections: 1.0 } )
Hvis du gør det, får du meget mere information om samlingerne. Se db.getCollectionInfos()
eksempel nedenfor for at se de data, der returneres, når du kører det sådan (db.getCollectionInfos()
metoden er en indpakning omkring listCollections
).
db.getCollectionNames()
Metode
db.getCollectionNames()
metode returnerer en matrix, der indeholder navnene på alle samlinger og visninger i den aktuelle database, eller hvis den kører med adgangskontrol, navnene på samlingerne i henhold til brugerens privilegier.
Eksempel:
db.getCollectionNames()
Resultat:
[ "employees", "pets", "pettypes", "products", "system.views" ]
db.getCollectionInfos()
Metode
db.getCollectionInfos()
metoden returnerer en række dokumenter med indsamlings- eller visningsoplysninger, såsom navn og muligheder, for den aktuelle database. Resultaterne afhænger af brugerens privilegier.
Her er et eksempel på at kalde det uden nogen argumenter:
db.getCollectionInfos()
Resultat:
[ { "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_" } } ]
Definitionen af db.getCollectionInfos()
går faktisk sådan her:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Så vi kan bruge filter
parameter for at filtrere listen over samlinger baseret på et forespørgselsudtryk. Dette kan anvendes på ethvert felt, der returneres af metoden.
Du kan også bruge nameOnly
parameter for at angive, at metoden kun skal returnere navnene på samlingerne og visningerne.
authorizedCollections
parameter, når den er sat til true
og bruges sammen med nameOnly: true
, tillader en bruger uden det nødvendige privilegium (dvs. listCollections-handling på databasen) at køre kommandoen, når adgangskontrol håndhæves. I dette tilfælde returnerer kommandoen kun de samlinger, som brugeren har privilegier til.
Eksempel på brug af db.getCollectionInfos()
med disse parametre:
db.getCollectionInfos( {}, true, true )
Resultat:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Her er en, hvor jeg filtrerer den til kun et bestemt navn:
db.getCollectionInfos( { name: "pets" }, true, true )
Resultat:
[ { "name" : "pets", "type" : "collection" } ]
Og her er, hvad der sker, når jeg fjerner de sidste to argumenter:
db.getCollectionInfos( { name: "pets" } )
Resultat:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]