MongoDB Pokaż całą zawartość ze wszystkich kolekcji

161

Czy można wyświetlić wszystkie kolekcje i ich zawartość w MongoDB?

Czy to jedyny sposób, aby pokazać je jeden po drugim?

Reno
źródło

Odpowiedzi:

261

Gdy jesteś w terminalu / linii poleceń, uzyskaj dostęp do bazy danych / kolekcji, której chcesz użyć, w następujący sposób:

show dbs
use <db name>
show collections

wybierz swoją kolekcję i wpisz następujące informacje, aby zobaczyć całą zawartość tej kolekcji:

db.collectionName.find()

Więcej informacji znajdziesz w Skróconym przewodniku po MongoDB .

sharkySharks
źródło
Proszę podać to jako poprawną odpowiedź. Możesz przeglądać WSZYSTKIE treści ze WSZYSTKICH kolekcji, pisząc kod, nie
wysyłając
18
Jeśli chcesz wizualnie uporządkować prezentowaną Ci kolekcję, polecam również: db.collectionName.find().pretty()
Steven Ventimiglia
2
Pamiętaj, że to nie zadziała, jeśli masz określone znaki (takie jak łącznik) w nazwie kolekcji. W takim przypadku użyjdb["collection-name"].find()
Bossan
126

Krok 1: Zobacz wszystkie swoje bazy danych:

show dbs

Krok 2: Wybierz bazę danych

use your_database_name

Krok 3: Pokaż kolekcje

show collections

Spowoduje to wyświetlenie wszystkich kolekcji w wybranej bazie danych.

Krok 4: Zobacz wszystkie dane

db.collection_name.find() 

lub

db.collection_name.find().pretty()
Debadatta
źródło
3
Zastąpiłem nazwę db nazwą db, która ciągle dawała mi błędy. Więc nie rób głupich rzeczy takich jak ja: D, trzymaj siędb.<collection_name>.find();
adam shamsudeen
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
}

Myślę, że ten skrypt może dostać to, czego chcesz. Drukuje nazwę każdej kolekcji, a następnie drukuje jej elementy w formacie json.

Bruno_Ferreira
źródło
19

Krok 1: Wejdź do powłoki MongoDB.

mongo

krok 2: do wyświetlenia wszystkich baz danych.

pokaż dbs;

krok 3: dla wybranej bazy danych:

użyj „nazwa_bazy_danych”

krok 4: do statystyk Twojej bazy danych.

db.stats ()

krok 5: wyszczególnienie wszystkich kolekcji (tabel).

pokaż kolekcje

krok 6: wydrukuj dane z określonej kolekcji.

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

Vaibhav gole
źródło
9

Przed napisaniem poniższych zapytań najpierw przejdź do swojego cmd lub PowerShell

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

Aby wyświetlić wszystkie nazwy kolekcji, użyj jednej z poniższych opcji: -

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

Aby pokazać całą zawartość lub dane kolekcji, użyj poniższego kodu, który został opublikowany przez Bruno_Ferreira.

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
źródło
Najlepsze rozwiązanie, pokazuje zawartość mojej kolekcji!
jjwallace
4

Tą drogą:

db.collection_name.find().toArray().then(...function...)
Vladimir Sostaric
źródło
4

To wystarczy:

db.getCollectionNames().forEach(c => {
    db[c].find().forEach(d => {
        print(c); 
        printjson(d)
    })
})
yunzen
źródło
2

Wolę inne podejście, jeśli używasz mongopowłoki:

Najpierw jako inna odpowiedź: use my_database_namepotem:

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

To zapytanie pokaże ci coś takiego:

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

Możesz użyć podobnego podejścia, db.getCollectionInfos()ponieważ jest to całkiem przydatne, jeśli masz tak dużo danych.

Juan de Dios
źródło
Użyj count()zamiast find():db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
hallman76