MongoDB Alle Inhalte aus allen Sammlungen anzeigen

161

Ist es möglich, alle Sammlungen und deren Inhalte in MongoDB anzuzeigen?

Ist der einzige Weg, eins nach dem anderen zu zeigen?

Reno
quelle

Antworten:

261

Wenn Sie sich in der Terminal- / Befehlszeile befinden, greifen Sie wie folgt auf die Datenbank / Sammlung zu, die Sie verwenden möchten:

show dbs
use <db name>
show collections

Wählen Sie Ihre Sammlung aus und geben Sie Folgendes ein, um den gesamten Inhalt dieser Sammlung anzuzeigen:

db.collectionName.find()

Weitere Informationen finden Sie hier in der MongoDB-Kurzanleitung .

sharkySharks
quelle
Bitte geben Sie dies als die richtige Antwort an. Sie können ALLE Inhalte aus ALLEN Sammlungen nur anzeigen, indem Sie Code schreiben und nicht über cli
imbatman
18
Wenn Sie die Ihnen präsentierte Sammlung visuell aufräumen müssen, empfehle ich außerdem: db.collectionName.find().pretty()
Steven Ventimiglia
2
Beachten Sie, dass dies nicht funktioniert, wenn der Name der Sammlung bestimmte Zeichen (z. B. einen Bindestrich) enthält. In diesem Fall verwendendb["collection-name"].find()
Bossan
126

Schritt 1: Alle Ihre Datenbanken anzeigen:

show dbs

Schritt 2: Wählen Sie die Datenbank aus

use your_database_name

Schritt 3: Zeigen Sie die Sammlungen an

show collections

Dadurch werden alle Sammlungen in Ihrer ausgewählten Datenbank aufgelistet.

Schritt 4: Alle Daten anzeigen

db.collection_name.find() 

oder

db.collection_name.find().pretty()
Debadatta
quelle
3
Ich habe den Datenbanknamen durch meinen Datenbanknamen ersetzt, was mir immer wieder Fehler gab. Also mach keine dummen Dinge wie mich: D, db.<collection_name>.find();
bleib
33
var collections = db.getCollectionNames();
for(var i = 0; i< collections.length; i++){    
   print('Collection: ' + collections[i]); // print the name of each collection
   db.getCollection(collections[i]).find().forEach(printjson); //and then print the json of each of its elements
}

Ich denke, dieses Skript könnte bekommen, was Sie wollen. Es druckt den Namen jeder Sammlung und druckt dann seine Elemente in json.

Bruno_Ferreira
quelle
19

Schritt 1: Betreten Sie die MongoDB-Shell.

Mongo

Schritt 2: Für die Anzeige aller Datenbanken.

zeige dbs;

Schritt 3: für eine ausgewählte Datenbank:

benutze 'database_name'

Schritt 4: für Statistiken Ihrer Datenbank.

db.stats ()

Schritt 5: Auflisten aller Sammlungen (Tabellen).

Sammlungen zeigen

Schritt 6: Drucken Sie die Daten aus einer bestimmten Sammlung.

db.'collection_name'.find (). pretty ()

Vaibhav Gole
quelle
9

Bevor Sie die folgenden Abfragen schreiben, rufen Sie zuerst Ihre cmd oder PowerShell auf

TYPE:
mongo             //To get into MongoDB shell
use <Your_dbName>      //For Creating or making use of existing db

Um alle Sammlungsnamen aufzulisten, verwenden Sie eine der folgenden Optionen: -

show collections  //output every collection
  OR
show tables
  OR
db.getCollectionNames() //shows all collections as a list

Um alle Inhalte oder Daten aller Sammlungen anzuzeigen, verwenden Sie den unten aufgeführten Code, der von Bruno_Ferreira veröffentlicht wurde.

var collections = db.getCollectionNames();
for(var i = 0; i< collections.length; i++) {    
   print('Collection: ' + collections[i]); // print the name of each collection
   db.getCollection(collections[i]).find().forEach(printjson); //and then print     the json of each of its elements
}
Amit Kumar
quelle
Beste Lösung, zeigt den Inhalt meiner Sammlung!
JJwallace
4

Diesen Weg:

db.collection_name.find().toArray().then(...function...)
Vladimir Sostaric
quelle
4

Das wird es tun:

db.getCollectionNames().forEach(c => {
    db[c].find().forEach(d => {
        print(c); 
        printjson(d)
    })
})
Yunzen
quelle
2

Ich bevorzuge einen anderen Ansatz, wenn Sie mongoShell verwenden:

Zuerst wie der andere antwortet: use my_database_namedann:

db.getCollectionNames().map( (name) => ({[name]: db[name].find().toArray().length}) )

Diese Abfrage zeigt Ihnen ungefähr Folgendes:

[
        {
                "agreements" : 60
        },
        {
                "libraries" : 45
        },
        {
                "templates" : 9
        },
        {
                "users" : 18
        }
]

Sie können einen ähnlichen Ansatz verwenden db.getCollectionInfos(), der ziemlich nützlich ist, wenn Sie so viele Daten haben.

Juan de Dios
quelle
Verwenden Sie count()anstelle von find():db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
hallman76