¿Cómo enumerar todas las bases de datos en el shell mongo?

Respuestas:

244

Listar todas las bases de datos en la consola mongoDB está usando el comando show dbs.

Para obtener más información sobre esto, consulte los Ayudantes de comando de Mongo Shell que se pueden usar en el shell de mongo.

Robert Christopher
fuente
15
Y para cualquiera (como yo) que acaba de instalar mongodb y está confundido de que la ejecución dbmuestra la base de datos actual, testpero esto no aparece en ninguno de los comandos de esta página que se explican aquí stackoverflow.com/q/38726310/73226
Martin Smith
3
Sin embargo, ¿cómo se llega a la
voluntad
2
@JamieHutber se vuelve tan shell escribiendo mongoen la línea de comando ( mongo --nodbpara no conectarse a una base de datos)
magikMaker
Sí, tenía que venir aquí por algo tan simple como show dbsporque cuando fui a los documentos simplemente no podía encontrar el show dbscomando en ningún lado. Los 'documentos' pueden ser bastante frustrantes a veces.
MadHatter
Ese comando no funciona en un --eval, solo en un shell interactivo. Las opciones de esta respuesta funcionan (aunque el formato de salida es diferente) stackoverflow.com/a/32192253/1837991
Gert van den Berg
55

Para MongoDB shell versión 3.0.5 inserte el siguiente comando en el shell:

db.adminCommand('listDatabases')

o alternativamente:

db.getMongo().getDBNames()
Carlos F. Enguix
fuente
2
si está en su caparazón y solo quiere nombres: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop
50

Para la lista de la base de datos:

show databases
show dbs

Para la tabla / lista de colección:

show collections
show tables
db.getCollectionNames()
Amol Udage
fuente
31

Desde el problema de la línea de comando

mongo --quiet --eval  "printjson(db.adminCommand('listDatabases'))"

que da salida

{
    "databases" : [
        {
            "name" : "admin",
            "sizeOnDisk" : 978944,
            "empty" : false
        },
        {
            "name" : "local",
            "sizeOnDisk" : 77824,
            "empty" : false
        },
        {
            "name" : "meteor",
            "sizeOnDisk" : 778240,
            "empty" : false
        }
    ],
    "totalSize" : 1835008,
    "ok" : 1
}
Scott Stensland
fuente
2
La mejor solución aquí para ejecutar algo automatizado (sin entrar en modo mongo shell primero)
herm
5

Para enumerar la base de datos mongodb en shell

 show databases     //Print a list of all available databases.
 show dbs   // Print a list of all databases on the server.

Pocos comandos más básicos

use <db>    // Switch current database to <db>. The mongo shell variable db is set to the current database.
show collections    //Print a list of all collections for current database.
show users  //Print a list of users for current database.
show roles  //Print a list of all roles, both user-defined and built-in, for the current database.
Amitesh
fuente
0

He encontrado una solución, donde admin () / others no funcionó.

const { promisify } = require('util');
const exec = promisify(require('child_process').exec)
async function test() {
  var res = await exec('mongo  --eval "db.adminCommand( { listDatabases: 1 }         
)" --quiet')
  return { res }
}

test()
  .then(resp => {
    console.log('All dbs', JSON.parse(resp.res.stdout).databases)
  })
test()
Rohit Parte
fuente