MongoDB Mostrar todo el contenido de todas las colecciones

161

¿Es posible mostrar todas las colecciones y sus contenidos en MongoDB?

¿Es la única forma de mostrar uno por uno?

Reno
fuente

Respuestas:

263

Una vez que esté en la línea de terminal / comando, acceda a la base de datos / colección que desea usar de la siguiente manera:

show dbs
use <db name>
show collections

elija su colección y escriba lo siguiente para ver todos los contenidos de esa colección:

db.collectionName.find()

Más información aquí en la Guía de referencia rápida de MongoDB .

tiburones
fuente
Indique esto como la respuesta correcta. Solo puede ver TODO el contenido de TODAS las colecciones escribiendo código, no consultando a través de cli
imbatman
19
Si necesita ordenar visualmente la colección presentada, también le recomiendo: db.collectionName.find().pretty()
Steven Ventimiglia el
2
Tenga en cuenta que esto no funciona si tiene ciertos caracteres (como un guión) en el nombre de la colección. En ese caso, usedb["collection-name"].find()
Bossan
126

Paso 1: Vea todas sus bases de datos:

show dbs

Paso 2: selecciona la base de datos

use your_database_name

Paso 3: muestra las colecciones

show collections

Esto enumerará todas las colecciones en la base de datos seleccionada.

Paso 4: ver todos los datos

db.collection_name.find() 

o

db.collection_name.find().pretty()
Debadatta
fuente
3
Reemplacé db name con mi nombre de db, que seguía dándome errores. Así que no hagas cosas estúpidas como yo: D, quédatedb.<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
}

Creo que este script podría obtener lo que quieres. Imprime el nombre de cada colección y luego imprime sus elementos en json.

Bruno_Ferreira
fuente
19

Paso 1: Ingrese en el shell MongoDB.

mongo

Paso 2: para visualizar todas las bases de datos.

mostrar dbs;

Paso 3: para una base de datos seleccionada:

use 'nombre_basedatos'

Paso 4: para estadísticas de su base de datos.

db.stats ()

Paso 5: enumerar todas las colecciones (tablas).

mostrar colecciones

Paso 6: imprima los datos de una colección particular.

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

Gole Vaibhav
fuente
9

Antes de escribir las consultas a continuación, primero ingrese a su cmd o PowerShell

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

Para enumerar todos los nombres de colecciones, utilice cualquiera de las siguientes opciones: -

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

Para mostrar todo el contenido de las colecciones o el uso de datos, utilice el siguiente código que fue publicado por 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
fuente
¡La mejor solución, muestra el contenido de mi colección!
jjwallace
4

De esta manera:

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

Esto lo hara:

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

Prefiero otro enfoque si está utilizando mongoshell:

Primero como el otro responde: use my_database_nameluego:

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

Esta consulta le mostrará algo como esto:

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

Puede usar un enfoque similar, ya db.getCollectionInfos()que es bastante útil si tiene tantos datos.

Juan de dios
fuente
Usar en count()lugar de find():db.getCollectionNames().map( (name) => ({[name]: db[name].count()}) )
hallman76