Wie liste ich in der MongoDB-Shell alle Sammlungen für die aktuelle Datenbank auf, die ich verwende?
Wie liste ich in der MongoDB-Shell alle Sammlungen für die aktuelle Datenbank auf, die ich verwende?
Antworten:
Du kannst tun...
JavaScript (Shell):
db.getCollectionNames()
Node.js:
db.listCollections()
Nicht-JavaScript (nur Shell):
show collections
Der Grund, warum ich das Nicht-JavaScript nenne, ist folgender:
$ mongo prodmongo/app --eval "show collections"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
2016-10-26T19:34:34.886-0400 E QUERY [thread1] SyntaxError: missing ; before statement @(shell eval):1:5
$ mongo prodmongo/app --eval "db.getCollectionNames()"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
[
"Profiles",
"Unit_Info"
]
Wenn Sie wirklich diese süße, süße show collections
Ausgabe wollen, können Sie:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
die hier gezeigte und grün eingecheckte Antwort erhalten? Ansonsten machen die Leute den gleichen Fehler, den ich unzählige Male gemacht habe, als sie zu dieser Antwort kamen - und versuchen zu verwenden, db.getCollectionNames
und der Fehler kommt zurück db.collectionNames is not a function
.
db.getCollectionNames()
ist immer noch die richtige Antwort für die Shell.
> show collections
listet alle Sammlungen in der aktuell ausgewählten Datenbank auf, wie in der Befehlszeilenhilfe ( help
) angegeben.
content 1145.586MB / 1506.855MB
zum Beispiel.
Wie liste ich alle Sammlungen für die aktuelle Datenbank auf, die ich verwende?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Ausgabe:
collection1 collection2 system.indexes
(oder)
show tables
Ausgabe:
collection1 collection2 system.indexes
(oder)
db.getCollectionNames()
Ausgabe:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
ist sehr hilfreich für diejenigen, die aus einem relationalen DBMS-Hintergrund stammen.
use
ist eine Datenbank zu verwenden, nichts mit Sammlungen zu tun
> show tables
Es gibt das gleiche Ergebnis wie Camerons Antwort.
Abgesehen von den von anderen Personen vorgeschlagenen Optionen:
show collections // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list
Es gibt auch eine andere Möglichkeit, die sehr praktisch sein kann, wenn Sie wissen möchten, wie die einzelnen Sammlungen erstellt wurden (z. B. handelt es sich um eine begrenzte Sammlung mit einer bestimmten Größe):
db.system.namespaces.find()
Zuerst müssen Sie eine Datenbank verwenden, um alle darin enthaltenen Sammlungen / Tabellen anzuzeigen.
>show dbs
users 0.56787GB
test (empty)
>db.test.help() // this will give you all the function which can be used with this db
>use users
>show tables //will show all the collection in the db
Sie können show tables
oder verwenden show collections
.
Versuchen:
help // To show all help methods
show dbs // To show all dbs
use dbname // To select your db
show collections // To show all collections in selected db
Der Befehl zum Anzeigen aller Sammlungen in der MongoDB-Datenbank lautet
show collections
Bevor Sie den show collections
Befehl ausführen, müssen Sie die Datenbank auswählen:
use mydb // mydb is the name of the database being selected
Um alle Datenbanken anzuzeigen, können Sie den Befehl verwenden
show dbs // Shows all the database names present
Weitere Informationen finden Sie unter Erste Schritte .
Wenn Sie alle Sammlungen der MongoDB-Shell (Befehlszeile) anzeigen möchten, verwenden Sie den Shell-Helfer.
show collections
Das zeigt alle Sammlungen für die aktuelle Datenbank. Wenn Sie alle Sammlungslisten aus Ihrer Anwendung abrufen möchten, können Sie die MongoDB-Datenbankmethode verwenden
db.getCollectionNames()
Weitere Informationen zum MongoDB-Shell-Helfer finden Sie in der mongo
Shell-Kurzreferenz .
Die folgenden Befehle in Mongoshell sind häufig.
show databases
show collections
Ebenfalls,
show dbs
use mydb
db.getCollectionNames()
Manchmal ist es nützlich, alle Sammlungen sowie die Indizes der Sammlungen anzuzeigen, die Teil des gesamten Namespace sind:
So würden Sie das machen:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Zwischen den drei Befehlen und diesem Ausschnitt sollten Sie gut abgedeckt sein!
Ich denke, eine der größten Verwirrungen ist der Unterschied zwischen dem, was Sie mit mongo
(oder einer interaktiven / hybriden Shell) tun können, und dem, was Sie mit mongo --eval
(oder einer reinen JavaScript-Shell) machen können. Ich halte diese hilfreichen Dokumente bereit:
Hier ist ein Beispiel für die Skripterstellung, die Sie sonst mit show
Befehlen ausführen könnten :
# List all databases and the collections in them
mongo --eval "
db.getMongo().getDBNames().forEach(
function(v, i){
print(
v + '\n\t' +
db.getSiblingDB(v).getCollectionNames().join('\n\t')
)
}
)
"
Hinweis: Das funktioniert sehr gut als Einzeiler. (Aber bei Stack Overflow sieht es schrecklich aus.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Auf> = 2.x können Sie tun
db.listCollections()
Auf 1.x können Sie tun
db.getCollectionNames()
db.getCollectionNames()
erhalte ich, [ "users" ]
weil ich eine Benutzersammlung habe. Wenn ich es versuche, db.listCollections()
dann ergibt es[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Listen Sie alle Sammlungen aus der mongo
Shell auf:
- db.getCollectionNames ()
- Sammlungen zeigen
- Tabellen anzeigen
Hinweis: Sammlungen werden aus der aktuellen Datenbank angezeigt, in der Sie sich gerade befinden
Zum Umschalten in die Datenbank.
Durch:
Verwenden Sie das Beispiel {Ihr_Datenbankname} :
use friends
Wo friends
ist der Name Ihrer Datenbank?
Dann schreibe:
db.getCollectionNames()
show collections
Dadurch erhalten Sie den Namen der Sammlungen.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Dadurch wird die Verbindung gestartet.show dbs
Befehl aus. Dies zeigt Ihnen alle vorhandenen / verfügbaren Datenbanken.database
Sie dann die gewünschte aus. Oben ist es anuradhfirst
. Dann renne use anuradhfirst
. Dadurch wird zur gewünschten Datenbank gewechselt.show collections
Befehl aus. Dies zeigt alles collections
in Ihrer ausgewählten Datenbank an.Sammlungen zeigen
Dieser Befehl funktioniert normalerweise in der MongoDB-Shell, sobald Sie zur Datenbank gewechselt haben.
Wenn Sie für MongoDB 3.0-Bereitstellungen mit der WiredTiger-Speicher-Engine
db.getCollectionNames()
eine Version der Mongo-Shell vor 3.0 oder eine Version des Treibers vor der 3.0-kompatiblen Version ausführen ,db.getCollectionNames()
werden keine Daten zurückgegeben, selbst wenn vorhandene Sammlungen vorhanden sind.
Weitere Details finden Sie hier .
show collections
oder
show tables
oder
db.getCollectionNames();
Ich benutze listCollections
(unterstützt MongoDB 3.0 und höher) für diesen Zweck.
Beispiel:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
So rufen Sie weitere Informationen wie den Index der Sammlung ab:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
So drucken Sie nur die Sammlungsnamen:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Ich denke, dies bietet mehr Flexibilität.
Lesen Sie mehr: listCollections
1. show collections; // Display all collections
2. show tables // Display all collections
3. db.getCollectionNames(); // Return array of collection. Example :[ "orders", "system.profile" ]
Detaillierte Informationen zu jeder Sammlung:
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Auflisten von Sammlungslisten basierend auf einer Suchzeichenfolge.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Beispiel: Suchen Sie alle Sammlungen mit dem Namen "import"
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Verwenden Sie den folgenden Befehl aus der mongo
Shell:
show collections