En el shell MongoDB, ¿cómo enumero todas las colecciones para la base de datos actual que estoy usando?
En el shell MongoDB, ¿cómo enumero todas las colecciones para la base de datos actual que estoy usando?
Respuestas:
Tu puedes hacer...
JavaScript (shell):
db.getCollectionNames()
Node.js:
db.listCollections()
No JavaScript (solo shell):
show collections
La razón por la que llamo 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 realmente quieres esa dulce, dulce show collections
salida, puedes:
$ mongo prodmongo/app --eval "db.getCollectionNames().join('\n')"
MongoDB shell version: 3.2.10
connecting to: prodmongo/app
Profiles
Unit_Info
db.listCollections()
la respuesta que se muestra aquí y marcarla en verde? De lo contrario, las personas están cometiendo el mismo error que cometí innumerables veces cuando llegan a esta respuesta, e intentan usar db.getCollectionNames
y el error regresa db.collectionNames is not a function
.
db.getCollectionNames()
sigue siendo la respuesta correcta para el shell.
> show collections
enumerará todas las colecciones en la base de datos seleccionada actualmente, como se indica en la línea de comando help ( help
).
content 1145.586MB / 1506.855MB
por ejemplo.
¿Cómo enumero todas las colecciones para la base de datos actual que estoy usando?
show collections
show tables
db.getCollectionNames()
show dbs
use databasename
show collections
Salida:
collection1 collection2 system.indexes
(o)
show tables
Salida:
collection1 collection2 system.indexes
(o)
db.getCollectionNames()
Salida:
[ "collection1", "collection2", "system.indexes" ]
use collectionname
show tables
es bastante útil para aquellos que provienen de un fondo dbms relacional
use
es usar una base de datos, nada que ver con colecciones
> show tables
Da el mismo resultado que la respuesta de Cameron.
Además 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 limitada con un tamaño particular):
db.system.namespaces.find()
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
Puedes usar show tables
o show collections
.
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
El comando utilizado para mostrar todas las colecciones en la base de datos MongoDB es
show collections
Antes de ejecutar el show collections
comando, debe 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 Cómo comenzar .
Si desea mostrar todas las colecciones del shell MongoDB (línea de comando), use el asistente de shell,
show collections
que muestra todas las colecciones para la base de datos actual. Si desea obtener todas las listas de recopilación de su aplicación, puede utilizar el método de base de datos MongoDB
db.getCollectionNames()
Para obtener más información sobre el asistente de shell MongoDB, puede ver la mongo
Referencia rápida de Shell .
Los siguientes comandos en mongoshell son comunes.
show databases
show collections
También,
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ías:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
¡Entre los tres comandos y este fragmento, debe estar bien cubierto!
Creo que una de las mayores confusiones es la diferencia entre lo que puede hacer con mongo
(o un shell interactivo / híbrido) frente a mongo --eval
(o un shell de JavaScript puro). Tengo estos útiles documentos a mano:
Aquí hay un ejemplo 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'))})"
En> = 2.x, puedes hacer
db.listCollections()
En 1.x puedes hacer
db.getCollectionNames()
db.getCollectionNames()
me sale [ "users" ]
porque tengo una colección de usuarios. Si lo intento, db.listCollections()
entonces resulta[thread1] TypeError: db.listCollections is not a function : @(shell):1:1
Enumere todas las colecciones del mongo
shell:
- db.getCollectionNames ()
- mostrar colecciones
- mostrar tablas
Nota: Las colecciones se mostrarán de la base de datos actual en el que se encuentra actualmente
Para cambiar a la base de datos.
Por:
utilice el ejemplo de {your_database_name} :
use friends
donde friends
está el nombre de tu base de datos.
Luego escribir:
db.getCollectionNames()
show collections
Esto te dará el nombre de las colecciones.
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
mongo
. Esto iniciará la conexión.show dbs
comando. Esto le mostrará todas las bases de datos existentes / disponibles.database
que desee. En lo anterior es anuradhfirst
. Entonces corre use anuradhfirst
. Esto cambiará a la base de datos que desee.show collections
comando. Esto mostrará todo el contenido de collections
la base de datos seleccionada.mostrar colecciones
Este comando generalmente funciona en el shell MongoDB una vez que ha cambiado a la base de datos.
Para las implementaciones de MongoDB 3.0 que utilizan el motor de almacenamiento WiredTiger, si ejecuta
db.getCollectionNames()
desde una versión del shell mongo antes de 3.0 o una versión del controlador anterior a la versión compatible con 3.0,db.getCollectionNames()
no devolverá datos, incluso si hay colecciones existentes.
Para más detalles, consulte esto .
show collections
o
show tables
o
db.getCollectionNames();
yo suelo listCollections
(admite MongoDB 3.0 y versiones posteriores) 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.
Leer más: listCollections
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 enumerar la lista de colecciones basada en una cadena de búsqueda.
db.getCollectionNames().filter(function (CollectionName) { return /<Search String>/.test(CollectionName) })
Ejemplo: buscar todas las colecciones que tengan "importación" en el nombre
db.getCollectionNames().filter(function (CollectionName) { return /import/.test(CollectionName) })
Use el siguiente comando del mongo
shell:
show collections