¿Cómo enumerar todas las colecciones en Mongo Shell?
-
28-10-2019 - |
Pregunta
En el shell de MongoDB, ¿cómo enumero todas las colecciones para la base de datos actual que estoy usando?
Solución
Tu puedes hacer...
JS (Shell):
db.getCollectionNames()
node.js:
db.listCollections()
no js (solo shell):
show collections
La razón por la que llamo a eso no js 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 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
Otros consejos
> show collections
Enumerará todas las colecciones en el DB seleccionado actualmente, como se indica en la línea de la línea de comando (help
).
¿Cómo enumero todas las colecciones para la base de datos actual que estoy usando?
3 métodos
show collections
show tables
db.getCollectionNames()
Para enumerar todo bases de datos:
show dbs
Para ingresar o usar la base de datos dada:
use databasename
Para enumerar todo colecciones:
show collections
Producción:
collection1 collection2 system.indexes
(o)
show tables
Producción:
collection1 collection2 system.indexes
(o)
db.getCollectionNames()
Producción:
[ "collection1", "collection2", "system.indexes" ]
Para ingresar o usar la colección dada
use collectionname
> show tables
Da el mismo resultado que la respuesta de Cameron.
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 limitada con un tamaño particular)
db.system.namespaces.find()
Primero debe 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
Probar:
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 toda la colección en la base de datos MongoDB es
show collections
Antes de ejecutar el comando show colecciones, 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 este enlace: http://docs.mongodb.org/manual/tutorial/getting-started/
Si desea mostrar todas las colecciones de MongoDB Shell (línea de comandos), use Shell Helper
show collections
que muestran todas las colecciones para la base de datos actual. Si desea obtener toda la lista de colecciones de su aplicación, puede usar el método de base de datos MongoDB
db.getCollectionNames()
Para más información MongoDB Shell Aelper puedes verhttp://docs.mongodb.org/manual/reference/mongo-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 en las colecciones que forman parte del espacio de nombres general:
Así es como harías eso:
db.getCollectionNames().forEach(function(collection) {
indexes = db[collection].getIndexes();
print("Indexes for " + collection + ":");
printjson(indexes);
});
Entre los 3 comandos y este fragmento, ¡deberías estar bien cubierto!
Creo que una de las mayores confusiones es la diferencia entre lo que puedes hacer con mongo
(o una carcasa interactiva/híbrida) vs. mongo --eval
(o un shell JavaScript puro). Mantengo estos documentos útiles a mano:
Aquí hay un ejemplo de secuencia de comandos de lo que de otra manera 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 OneLiner. (Pero se ve terrible en Stackoverflow.)
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()
Para cambiar a la base de datos. por:-Use {your_database_name} ejemplo:
use friends
Donde amigos es el nombre de su base de datos.
luego escribir:-
db.getCollectionNames()
show collections
Esto le dará el nombre de las colecciones.
Enumere todas las colecciones de Mongo Shell:
- db.getCollectionNames ()
- Mostrar colecciones
- mesas de exhibición
Nota: Las colecciones se mostrarán desde la base de datos actual donde se encuentra corrientemente
> show dbs
anuradhfirst 0.000GB
local 0.000GB
> use anuradhfirst
switched to db anuradhfirst
> show collections
record
- conectarse con la base de datos Mongo usando
mongo
, esto iniciará la conexión. - entonces corre
show dbs
Comando, esto le mostrará a todos la base de datos que sale/disponible. - luego seleccione el
database
¿Quieres? En arriba esanuradhfirst
, entonces correuse anuradhfirst
. Esto cambiará a la base de datos que desee. - entonces corre
show collections
comando, esto mostrará todo elcollections
Dentro de su base de datos seleccionada.
Mostrar colecciones
Este comando generalmente funciona en Mongo Shell una vez que ha cambiado a la base de datos.
Para implementaciones de MongoDB 3.0 utilizando el motor de almacenamiento WiredTiger, si se ejecuta
db.getCollectionNames()
de una versión del shell mongo antes de 3.0 o una versión del controlador antes de la versión compatible con 3.0,db.getCollectionNames()
No devolverá datos, incluso si existen colecciones existentes.
Para más detalles, consulte este
1. show collections; //Display all collection
2. show tables //Display all collection
3. db.getCollectionNames(); // Retuen array of collection Example :[ "orders", "system.profile" ]
Detalles información de 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 de ListCollections en la base de datos), el método enumera los nombres de todas las colecciones para la base de datos.
- Para los usuarios sin el acceso requerido, el método enumera solo las colecciones para las cuales los usuarios tienen privilegios. Por ejemplo, si un usuario ha encontrado en una colección específica en una base de datos, el método devolvería solo esa colección.
yo suelo listCollections
(Admite Mongo 3.0 y UP) 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 la colección:
db.runCommand({ listCollections: 1, filter: {}, nameOnly: true }).cursor.firstBatch.forEach(v => {print(v.name)})
Siento que esto proporciona más flexibilidad.
Lee mas: https://docs.mongodb.com/manual/reference/command/listcollections/
Use el siguiente comando de Mongo Shell:- Mostrar colecciones