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 collectionsKommandolistCollectionsKommandodb.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 collectionsviser ikke-systemsamlingerne for databasen. - For brugere uden den nødvendige adgang,
show collectionsviser 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_"
}
}
]