Wie liste ich in der MongoDB-Shell alle Sammlungen für die aktuelle Datenbank auf, die ich verwende?
Du kannst tun...
JS (Shell):
db.getCollectionNames()
node.js:
db.listCollections()
nicht-JS (nur Shell):
show collections
Der Grund, warum ich nicht-JS nenne, ist:
$ 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 diese süße, show collections
-Ausgabe wirklich 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
> show collections
listet alle Sammlungen in der aktuell ausgewählten Datenbank auf, wie in der Befehlszeilenhilfe (help
) angegeben.
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
Es gibt das gleiche Ergebnis wie Camerons Antwort.
Abgesehen von den von anderen Leuten vorgeschlagenen Optionen:
show collections //output every collection
show tables
db.getCollectionNames() //shows all collections as a list
Es gibt auch einen anderen Weg, der sehr praktisch sein kann, wenn Sie wissen möchten, wie die einzelnen Sammlungen erstellt wurden (z. B. eine begrenzte Sammlung mit einer bestimmten Größe).
db.system.namespaces.find()
Zuerst müssen Sie eine Datenbank verwenden, um alle Sammlungen/Tabellen darin 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 show collections
verwenden.
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 der gesamten Sammlung in der mongoDb-Datenbank lautet
show collections
Bevor Sie den Befehl show Collections 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
Für weitere Informationen besuchen Sie diesen Link: http://docs.mongodb.org/manual/tutorial/getting-started/
Wenn Sie alle Sammlungen aus der mongodb-Shell (Befehlszeile) anzeigen möchten, verwenden Sie den Shell-Helper
show collections
hier werden alle Sammlungen für die aktuelle Datenbank angezeigt. Wenn Sie alle Sammlungslisten aus Ihrer Anwendung abrufen möchten, können Sie die Datenbankmethode mongodb verwenden
db.getCollectionNames()
Weitere Informationen zum Shell-Helfer von mongodb finden Sie unter http://docs.mongodb.org/manual/reference/mongo-Shell/
Die folgenden Befehle auf Mongoshell sind üblich
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 Namensraums sind:
So würden Sie das machen:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Zwischen den 3 Befehlen und diesem Snippet 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) und mongo --eval
(oder einer reinen Javascript-Shell) machen können. Ich halte diese hilfreichen Dokumente bereit:
Hier ein Beispiel für ein Skripting, was Sie sonst mit show
-Befehlen machen 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 wirklich gut als Oneliner. (Sieht aber auf StackOverflow schrecklich aus.)
mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"
Bei> = 2.x können Sie das tun
db.listCollections()
Auf 1.x kannst du das tun
db.getCollectionNames()
Wechseln Sie in die Datenbank . Mit: - Verwenden Sie {Ihr_Datenbankname} Beispiel:
use friends
dabei ist Freunde der Name Ihrer Datenbank.
dann schreibe:-
db.getCollectionNames()
show collections
dadurch erhalten Sie den Namen der Sammlungen.
Alle Sammlungen der Mongo-Shell auflisten:
- db.getCollectionNames ()
- kollektionen anzeigen
- tabellen anzeigen
Hinweis: Sammlungen werden aus der aktuellen Datenbank angezeigt, in der Sie sich in .__ befinden. zur Zeit
kollektionen anzeigen
dieser Befehl funktioniert normalerweise auf der Mongo Shell, wenn Sie zur Datenbank wechseln.
> 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
aus. Dadurch werden alle vorhandenen/verfügbaren Datenbanken angezeigt.database
aus. Daraufhin wird anuradhfirst
angezeigt. Führen Sie dann use anuradhfirst
aus. Dadurch wird die gewünschte Datenbank ausgewählt.show collections
aus. Daraufhin werden alle collections
-Werte in der ausgewählten Datenbank angezeigt. 1. show collections; //Display all collection
2. show tables //Display all collection
3. db.getCollectionNames(); // Retuen array of collection Example :[ "orders", "system.profile" ]
Details zu jeder Sammlung
db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
Bei MongoDB 3.0-Implementierungen, die die WiredTiger-Speicher-Engine verwenden, wenn Sie führen
db.getCollectionNames()
von einer Version der Mongo-Shell aus vor 3.0 oder eine Version des Treibers vor 3.0-kompatibler Versiondb.getCollectionNames()
liefert keine Daten zurück, selbst wenn bestehende Sammlungen.
Weitere Details finden Sie unter this
Ich verwende listCollections
(unterstützt Mongo 3.0 und höher) für diesen Zweck.
beispiel:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });
Weitere Informationen wie den Index der Sammlung abrufen:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });
So drucken Sie nur die Namen der Sammlung:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Ich glaube, dass dies mehr Flexibilität bietet.
lesen Sie mehr: https://docs.mongodb.com/manual/reference/command/listCollections/
verwenden Sie den folgenden Befehl aus der Mongo-Shell: - show collection