¿Cómo puedo enumerar todas las colecciones en el shell de MongoDB?

En el shell de MongoDB, ¿cómo enumero todas las colecciones de la base de datos actual que estoy usando?

preguntado el 14 de enero de 12 a las 18:01

23 Respuestas

Tu puedes hacer...

JavaScript (cáscara):

db.getCollectionNames()

Nodo.js:

db.listCollections()

Sin JavaScript (solo shell):

show collections

La razón por la que llamo a eso que no es JavaScript es porque:

$ 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"
]

Si de verdad quieres ese dulce, dulce show collections salida, puede:

$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info

respondido 11 mar '20, 03:03

Buena característica. Puede iterar a través de la matriz de nombres para hacer otra cosa (por ejemplo, eliminar todos los elementos de las colecciones). - hilton perantunes

¿Podemos por favor conseguir db.listCollections() como la respuesta que se muestra aquí y marcada en verde? De lo contrario, las personas cometen el mismo error que yo cometí innumerables veces cuando llegan a esta respuesta e intentan usar db.getCollectionNames y el error vuelve db.collectionNames is not a function. - lechuga ingeniosa

@niftylettuce Esta pregunta es sobre el shell MongoDB, no sobre el controlador node.js. db.getCollectionNames() sigue siendo la respuesta correcta para el caparazón. - johnnyhk

> show collections

enumerará todas las colecciones en la base de datos seleccionada actualmente, como se indica en la ayuda de la línea de comando (help).

Respondido el 14 de enero de 12 a las 22:01

No puede usar la salida de mostrar colecciones en un script, pero puede hacer x = db.getCollectionNames () para obtener una matriz de todos los nombres. - ceteras

¿Qué significan los dos números enumerados después de cada colección? ¿Dos tipos de tallas? content 1145.586MB / 1506.855MB por ejemplo. - Dan Dascalescu

@Dan: No he usado MongoDB por un tiempo, pero mi mejor suposición es que es el tamaño de los datos almacenados en la colección frente a la cantidad total asignada a esa colección (para manejar actualizaciones menores y crecimiento sin tener que reasignar constantemente nuevo espacio para el contenido de toda la colección). - Cameron

¿Cómo enumero todas las colecciones de la base de datos actual que estoy usando?

Tres métodos

  • show collections
  • show tables
  • db.getCollectionNames()

Para enumerar todo bases de datos:

show dbs

Para ingresar o usar una base de datos determinada:

use databasename

Para enumerar todo colecciones:

show collections

Salida:

collection1
collection2
system.indexes

(o)

show tables

Salida:

collection1
collection2
system.indexes

(o)

db.getCollectionNames()

Salida:

[ "collection1", "collection2", "system.indexes" ]

Para ingresar o usar una colección determinada

use collectionname

respondido 11 mar '20, 03:03

+1 para la respuesta más completa. ilustrando show tables es muy útil para aquellos que provienen de un entorno dbms relacional. - jeff puckett

no, use es usar una base de datos, nada que ver con colecciones - sjmeverett

también podemos usar db.collections - Biplab Malakar

> show tables

Da el mismo resultado que la respuesta de Cameron.

Respondido 14 Oct 13, 19:10

Aparte de las opciones sugeridas por otras personas:

show collections  // Output every collection
show tables
db.getCollectionNames() // Shows all collections as a list

También hay otra forma que puede ser realmente útil si desea saber cómo se creó cada una de las colecciones (por ejemplo, es una colección con límite y un tamaño en particular):

db.system.namespaces.find()

respondido 11 mar '20, 03:03

Primero necesita usar una base de datos para mostrar todas las colecciones / tablas dentro de ella.

>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

respondido 09 nov., 13:07

Tratar:

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

contestado el 05 de mayo de 14 a las 07:05

Puedes usar show tables or show collections.

respondido 11 mar '20, 03:03

@LalitKumarB: ¿Cómo es eso? Según otras respuestas, esa es una respuesta adecuada para esto que realmente podría funcionar. Al menos es un intento de responder. Lo que es, es una respuesta a una pregunta muy antigua que ya tiene múltiples respuestas correctas publicadas. - Roope Hakulinen

El comando utilizado para mostrar todas las colecciones en la base de datos MongoDB es

show collections

Antes de ejecutar el show collections comando tienes que seleccionar la base de datos:

use mydb // mydb is the name of the database being selected

Para ver todas las bases de datos, puede usar el comando

show dbs // Shows all the database names present

Para obtener más información, visite ver Cómo Empezar.

respondido 11 mar '20, 03:03

Si desea mostrar todas las colecciones del shell de MongoDB (línea de comando), use el asistente de shell,

show collections

que muestra todas las colecciones de la base de datos actual. Si desea obtener todas las listas de colecciones de su aplicación, puede usar el método de base de datos MongoDB

db.getCollectionNames()

Para obtener más información sobre el asistente de shell de MongoDB, puede ver mongo Referencia rápida de Shell.

respondido 11 mar '20, 03:03

Los siguientes comandos en mongoshell son comunes.

show databases
show collections

También, trabaja para

show dbs
use mydb
db.getCollectionNames()

A veces es útil ver todas las colecciones, así como los índices de las colecciones que forman parte del espacio de nombres general:

Así es como lo haría:

db.getCollectionNames().forEach(function(collection) {
    indexes = db[collection].getIndexes();
    print("Indexes for " + collection + ":");
    printjson(indexes);
});

Entre los tres comandos y este fragmento, ¡debería estar bien cubierto!

respondido 11 mar '20, 03:03

Creo que una de las mayores confusiones es la diferencia entre lo que puedes hacer con mongo (o un shell interactivo / híbrido) vs. mongo --eval (o un shell de JavaScript puro). Tengo a mano estos útiles documentos:

A continuación, se muestra un ejemplo de creación de secuencias de comandos de lo que de otro modo podría hacer con show comandos:

# 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')
            )
        }
    )
"

Nota: Eso funciona muy bien como una sola línea. (Pero se ve terrible en Stack Overflow).

mongo --eval "db.getMongo().getDBNames().forEach(function(v, i){print(v+'\n\t'+db.getSiblingDB(v).getCollectionNames().join('\n\t'))})"

respondido 11 mar '20, 03:03

> show dbs        
anuradhfirst  0.000GB
local         0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
  • conectarse con la base de datos MongoDB usando mongo. Esto iniciará la conexión.
  • entonces corre show dbs mando. Esto le mostrará todas las bases de datos existentes / disponibles.
  • luego seleccione el database quieres. En lo de arriba es anuradhfirst. Entonces corre use anuradhfirst. Esto cambiará a la base de datos que desee.
  • entonces corre show collections mando. Esto mostrará todos los collections dentro de su base de datos seleccionada.

respondido 11 mar '20, 03:03

Esta respuesta muestra los pasos correctos para llegar a la lista de colecciones. - Muhammad Tariq

En> = 2.x, puede hacer

db.listCollections()

En 1.x puedes hacer

db.getCollectionNames()

Respondido el 12 de enero de 16 a las 02:01

como @JohnnyHK señaló esto solo se aplica a controlador de nodo y no la cáscara de mongo por pregunta de OP - jeff puckett

@JeffPuckettII No uso Node. Esto funciona perfectamente para mí dentro de la cáscara de mongo. Me pregunto por qué no sería así. - Aniruddh

Estoy ejecutando la versión de shell de MongoDB: 3.2.6, y cuando ejecuto db.getCollectionNames() yo obtengo [ "users" ] porque tengo una colección de usuarios. Si lo intento db.listCollections() entonces resulta en [thread1] TypeError: db.listCollections is not a function : @(shell):1:1 - jeff puckett

Para cambiar a la base de datos.

Por:

usa {your_database_name} ejemplo:

use friends

sin que importe friends es el nombre de su base de datos.

A continuación, escribir:

db.getCollectionNames()
show collections

Esto le dará el nombre de las colecciones.

respondido 11 mar '20, 03:03

¿En qué se diferencia esto de las respuestas anteriores? - Pedro Mortensen

Enumere todas las colecciones del mongo cáscara:

  • db.getCollectionNames ()
  • mostrar colecciones
  • mostrar tablas

Nota: Las colecciones se mostrarán de la base de datos actual en dónde se encuentra actualmente

respondido 11 mar '20, 03:03

¿En qué se diferencia esto de las respuestas anteriores? - Pedro Mortensen

 1. show collections; // Display all collections
 2. show tables     // Display all collections
 3. db.getCollectionNames();   // Return array of collection. Example :[ "orders", "system.profile" ]

Información detallada para cada colección:

db.runCommand( { listCollections: 1.0, authorizedCollections: true, nameOnly: true } )
  • Para los usuarios con el acceso requerido (privilegios que otorgan la acción listCollections en la base de datos), el método enumera los nombres de todas las colecciones de la base de datos.
  • Para los usuarios sin el acceso requerido, el método enumera solo las colecciones para las que los usuarios tienen privilegios. Por ejemplo, si un usuario ha encontrado una colección específica en una base de datos, el método devolvería solo esa colección.

Para enumerar la lista de colecciones según una cadena de búsqueda.

db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })

Ejemplo: Encuentra toda la colección que tenga "importación" en el nombre

db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })

Respondido 28 Abr '20, 10:04

¿Puedo obtener la lista de la colección que contiene algún nombre como filtro? Parveen

@Praveen: he actualizado mi respuesta para incluir la respuesta a su caso. Espero que ayude - Amitesh Bharti

Gracias Amitesh. Escribí mi script db.getCollectionNames (). ForEach (function (collName) {if (collName.startsWith ("TestCollection_")) {print ("droping index for" + collName); db.getCollection (collName) .dropIndex (" ts_1 ");}}); - Parveen

mostrar colecciones

Este comando generalmente funciona en el shell de MongoDB una vez que ha cambiado a la base de datos.

respondido 11 mar '20, 03:03

Para implementaciones de MongoDB 3.0 que utilizan el motor de almacenamiento WiredTiger, si ejecuta db.getCollectionNames() desde una versión del shell mongo anterior a la 3.0 o una versión del controlador anterior a la versión compatible con la 3.0, db.getCollectionNames() no devolverá ningún dato, incluso si hay colecciones existentes.

Para obtener más detalles, consulte este.

respondido 11 mar '20, 03:03

En caso de que alguien use Python y PyMongo:

db.list_collection_names()

Respondido 29 Oct 21, 00:10

yo suelo listCollections (compatible con MongoDB 3.0 y superior) para este propósito.

Ejemplo:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true });

Para obtener más información como el índice de la colección:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: false });

Para imprimir solo los nombres de las colecciones:

db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})

Siento que esto proporciona más flexibilidad.

Más información: listaColecciones

respondido 11 mar '20, 03:03

show collections

or

show tables

or

db.getCollectionNames();

Respondido el 02 de enero de 20 a las 11:01

¿En qué se diferencia esto de las respuestas anteriores? - Pedro Mortensen

Utilice el siguiente comando del mongo cáscara:

show collections

respondido 11 mar '20, 03:03

¿En qué se diferencia esto de las respuestas anteriores? - Pedro Mortensen

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.