Bei der Verwendung von MongoDB gibt es mehrere Möglichkeiten, die Sammlungen in einer Datenbank aufzulisten.
Hier sind vier Möglichkeiten, um eine Liste von Sammlungen in einer MongoDB-Datenbank zu erhalten:
- Die
show collections
Befehl - Die
listCollections
Befehl - Der
db.getCollectionNames()
Methode - Die
db.getCollectionInfos()
Methode
Die show collections
Befehl
Wenn Sie die Mongo-Shell verwenden, erhalten Sie am schnellsten eine Liste mit Sammlungen, indem Sie show collections
verwenden Befehl. Dieser Befehl ruft eine Liste von Sammlungen und Ansichten in der aktuellen Datenbank ab.
Beispiel:
show collections
Ergebnis:
employees pets pettypes products system.views
In diesem Fall gibt es fünf Ergebnisse. Wir können es nicht nur durch Anschauen erkennen, aber pettypes
ist eigentlich eine Ansicht. Die anderen sind Sammlungen.
Die system.views
Sammlung ist eine Systemsammlung, die Informationen zu jeder Ansicht in der Datenbank enthält.
Die tatsächlich zurückgegebenen Sammlungen hängen von Ihrer Zugriffsebene ab:
- Für Benutzer mit dem erforderlichen Zugriff
show collections
listet die Nicht-Systemsammlungen für die Datenbank auf. - Für Benutzer ohne den erforderlichen Zugriff
show collections
listet nur die Sammlungen auf, für die der Benutzer Berechtigungen hat.
Die listCollections
Befehl
Die listCollections
Der Verwaltungsbefehl gibt den Namen und die Optionen von Sammlungen und Ansichten in der Datenbank zurück. Es gibt die Informationen in Form eines Dokuments zurück.
Beispiel:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Ergebnis:
{ "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 }
Das Dokument enthält Informationen, mit denen ein Cursor zu den Sammlungsinformationen erstellt werden kann.
Dieses Mal können wir sehen, welche Sammlungen und welche Ansichten sind.
Wir können den Befehl auch so ausführen:
db.runCommand( { listCollections: 1.0 } )
Dadurch erhalten Sie viel mehr Informationen über die Sammlungen. Siehe db.getCollectionInfos()
Beispiel unten, um die zurückgegebenen Daten zu sehen, wenn es so ausgeführt wird (die db.getCollectionInfos()
Methode ist ein Wrapper um listCollections
).
Die db.getCollectionNames()
Methode
Die db.getCollectionNames()
Die Methode gibt ein Array zurück, das die Namen aller Sammlungen und Ansichten in der aktuellen Datenbank enthält, oder, wenn sie mit Zugriffskontrolle ausgeführt wird, die Namen der Sammlungen gemäß den Berechtigungen des Benutzers.
Beispiel:
db.getCollectionNames()
Ergebnis:
[ "employees", "pets", "pettypes", "products", "system.views" ]
Die db.getCollectionInfos()
Methode
Die db.getCollectionInfos()
-Methode gibt ein Array von Dokumenten mit Sammlungs- oder Ansichtsinformationen wie Name und Optionen für die aktuelle Datenbank zurück. Die Ergebnisse hängen von den Rechten des Benutzers ab.
Hier ist ein Beispiel für den Aufruf ohne Argumente:
db.getCollectionInfos()
Ergebnis:
[ { "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_" } } ]
Die Definition von db.getCollectionInfos()
geht eigentlich so:
db.getCollectionInfos(filter, nameOnly, authorizedCollections)
Also können wir den filter
verwenden -Parameter, um die Liste der Sammlungen basierend auf einem Abfrageausdruck zu filtern. Dies kann auf jedes von der Methode zurückgegebene Feld angewendet werden.
Sie können auch nameOnly
verwenden Parameter, um anzugeben, dass die Methode nur die Namen der Sammlungen und Ansichten zurückgeben soll.
Die authorizedCollections
-Parameter, wenn er auf true
gesetzt ist und mit nameOnly: true
verwendet , ermöglicht es einem Benutzer ohne die erforderliche Berechtigung (d. h. listCollections-Aktion für die Datenbank), den Befehl auszuführen, wenn die Zugriffssteuerung erzwungen wird. In diesem Fall gibt der Befehl nur die Sammlungen zurück, für die der Benutzer Berechtigungen hat.
Beispiel für die Verwendung von db.getCollectionInfos()
mit diesen Parametern:
db.getCollectionInfos( {}, true, true )
Ergebnis:
[ { "name" : "employees", "type" : "collection" }, { "name" : "pets", "type" : "collection" }, { "name" : "pettypes", "type" : "view" }, { "name" : "products", "type" : "collection" }, { "name" : "system.views", "type" : "collection" } ]
Hier ist eine, bei der ich sie nur nach einem bestimmten Namen filtere:
db.getCollectionInfos( { name: "pets" }, true, true )
Ergebnis:
[ { "name" : "pets", "type" : "collection" } ]
Und Folgendes passiert, wenn ich die letzten beiden Argumente entferne:
db.getCollectionInfos( { name: "pets" } )
Ergebnis:
[ { "name" : "pets", "type" : "collection", "options" : { }, "info" : { "readOnly" : false, "uuid" : UUID("91d1c6d8-8516-455d-a3c2-b157e1998f8c") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } } ]