Como listar todos os bancos de dados no shell mongo?

204

Eu sei como listar todas as coleções em um banco de dados específico , mas como listar todos os bancos de dados disponíveis no shell do MongoDB?

fracz
fonte
2
Está show dbsno console do mongo. Por favor, consulte a useful linksseção no wiki da tag mongodb . Antes de postar uma pergunta, às vezes pode ajudar você a encontrar uma solução mais rapidamente.
Robert Christopher

Respostas:

244

Listando todos os bancos de dados no MongoDB console é usando o comando show dbs.

Para obter mais informações, consulte os Mongo Shell Command Helpers que podem ser usados ​​no mongo shell.

Robert Christopher
fonte
15
E para qualquer pessoa (como eu) que acabou de instalar o mongodb e está confusa de que a execução dbmostra que o banco de dados atual é, testmas isso não está listado em nenhum dos comandos nesta página, explicados aqui stackoverflow.com/q/38726310/73226
Martin Smith
3
Como na terra você chega ao deve embora: /
Jamie Hutber 13/08/19
2
@JamieHutber você fica tão do shell, digitando mongona linha de comando (de mongo --nodbnão se conectar a um banco de dados)
magikMaker
Sim, eu tive que vir aqui para algo tão simples quanto show dbsporque, quando fui à documentação, simplesmente não consegui encontrar o show dbscomando em lugar algum. Os 'documentos' podem ser bastante frustrantes às vezes.
1819 MadHatter
Esse comando não funciona em um --eval, apenas em um shell interativo. As opções desta resposta funcionam (embora o formato de saída seja diferente) stackoverflow.com/a/32192253/1837991
Gert van den Berg
55

Para o shell do MongoDB versão 3.0.5, insira o seguinte comando no shell:

db.adminCommand('listDatabases')

ou alternativamente:

db.getMongo().getDBNames()
Carlos F. Enguix
fonte
2
se você estiver no seu shell e quiser apenas nomes: mongo admin --quiet -u <mongodb_admin> -p [<password>] --eval 'db.getMongo().getDBNames().forEach(function(db){print(db)})'hth
Boop
50

Para lista de banco de dados:

show databases
show dbs

Para tabela / lista de coleção:

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

No problema da linha de comando

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

o que dá saída

{
    "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
fonte
2
Melhor solução aqui para executar algo automatizado (sem entrar em modo shell mongo primeiro)
herm
5

Para listar o banco de dados mongodb no shell

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

Poucos comandos mais 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
fonte
0

Eu encontrei uma solução em que admin () / others não funcionou.

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
fonte