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?

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 .


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()

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.


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 ()


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
}

Beste Lösung, zeigt den Inhalt meiner Sammlung!
JJwallace


4

Das wird es tun:

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

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.


Verwenden Sie count()anstelle von find():db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
hallman76
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.