Definição
listDatabasesO comando
listDatabasesfornece uma lista de todos os bancos de dados existentes junto com estatísticas básicas sobre eles. OlistDatabasesdeve ser executado no banco de dadosadmin, como no exemplo a seguir:
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
db.adminCommand( { listDatabases: 1 } )
O valor (por exemplo: 1) não afeta a saída do comando.
Campos de comando
O comando pode assumir os seguintes campos opcionais:
Campo | Tipo | Descrição |
|---|---|---|
| documento | Opcional. Um predicado de query que determina quais bancos de dados são listados. Você pode especificar uma condição em qualquer um dos campos na saída
|
| booleano | Opcional. Um sinalizador para indicar se o comando deve retornar apenas os nomes do banco de dados ou retornar os nomes do banco de dados e as informações de tamanho. O retorno de informações de tamanho requer o bloqueio de cada banco de dados, um de cada vez, enquanto o retorno apenas de nomes não requer o bloqueio de nenhum banco de dados. O valor padrão |
| booleano | Opcional. Um sinalizador que determina quais bancos de dados serão retornados com base nos privilégios do usuário quando o controle de acesso estiver habilitado.
Para mais informações, consulte Comportamento. |
| any | Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:
Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc). |
Comportamento
Quando a autenticação está habilitada, o comando listDatabases retorna valores diferentes com base nos privilégios atribuídos ao usuário que executa o comando e na opção de comando authorizedDatabases:
Se
authorizedDatabasesnão for especificado, eSe o usuário tiver a ação
listDatabasesno recurso de cluster, o comandolistDatabasesretornará todos os bancos de dados.Se o usuário não tiver a ação
listDatabasesno cluster, o comandolistDatabasesretornará somente os bancos de dados para os quais o usuário tem privilégios (incluindo bancos de dados para os quais o usuário tem privilégios em coleções específicas).
Se o
authorizedDatabasesfortrue, o comandolistDatabasesretornará somente os bancos de dados para os quais o usuário tem privilégios (incluindo bancos de dados para os quais o usuário tem privilégios em coleções específicas).Se
authorizedDatabasesforfalse, eSe o usuário tiver a ação
listDatabasesno cluster, o comandolistDatabasesretornará todos os bancos de dados.Se o usuário não tiver a ação
listDatabasesno cluster, o comandolistDatabasesretornará erros com permissões insuficientes.
Desconexão do cliente
A partir do MongoDB 4.2, se o cliente que emitiu listDatabases se desconectar antes da conclusão da operação, o MongoDB marcará listDatabases para encerramento usando killOp.
Restrição de estado do membro do conjunto de réplica
Para executar em um membro do conjunto de réplicas, as operações delistDatabases exigem que o membro esteja no estado PRIMARY ou SECONDARY. Se o membro estiver em outro estado, como STARTUP2, ocorre um erro na operação.
Exemplos
Listar nomes e tamanhos do banco de dados
Execute listDatabases no banco de dados admin:
db.adminCommand( { listDatabases: 1 } )
Veja a seguir um exemplo de um resultado listDatabases:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 83886080, "empty" : false }, { "name" : "local", "sizeOnDisk" : 83886080, "empty" : false }, { "name" : "test", "sizeOnDisk" : 83886080, "empty" : false } ], "totalSize" : 251658240, "totalSizeMb" : 251, "ok" : 1 }
Listar apenas nomes de bancos de dados
Novidade na versão 3.6.
Execute listDatabases no banco de dados admin. Especifique a opção nameOnly: true:
db.adminCommand( { listDatabases: 1, nameOnly: true} )
Veja a seguir um exemplo de um resultado listDatabases quando executado com a opção nameOnly: true:
{ "databases" : [ { "name" : "admin" }, { "name" : "local" }, { "name" : "test" } ], "ok" : 1 }
Listar bancos de dados que correspondem ao filtro
Novidade na versão 3.6.
Execute listDatabases no banco de dados admin. Especifique a opção filter para listar somente bancos de dados que correspondam aos critérios de filtro especificados.
Por exemplo, o seguinte especifica um filtro que listDatabases retorna apenas informações em bancos de dados cujo nome corresponde à regular expressionespecificada:
db.adminCommand( { listDatabases: 1, filter: { "name": /^rep/ } } )
Clusters fragmentados
Quando executado em uma instância mongos, listDatabases:
adiciona um documento incorporado de
shardsao documento de resumo de cada banco de dados senameOnly: falseeexclui o banco de dados
local.
Cada elemento no documento incorporado do shards consiste em um campo cuja chave fornece o nome de uma collection nesse shard e cujo valor representa o tamanho da collection em bytes.
O campo sizeOnDisk representa o tamanho total de todas as collections e índices listados.
Por exemplo:
{ "databases" : [ { "name" : "admin", "sizeOnDisk" : 16384, "empty" : false, "shards" : { "config" : 16384 } }, { "name" : "config", "sizeOnDisk" : 176128, "empty" : false, "shards" : { "clients" : 28672, "patients" : 8192, "config" : 139264 } }, { "name" : "test", "sizeOnDisk" : 12288, "empty" : false, "shards" : { "clients" : 12288 } } ], "totalSize" : 204800, "totalSizeMb" : 0, "ok" : 1 }
Saída
listDatabases.databasesTipo: Array
Array de documentos, cada um contendo informações em um único banco de dados.
listDatabases.databases.sizeOnDiskTipo: inteiro
Tamanho total dos arquivos do banco de dados no disco, expressos em bytes.
listDatabases.databases.shardsTipo: Documento
Cada elemento no documento
shardsconsiste em um campo cuja chave fornece o nome de uma collection nesse shard e cujo valor representa o tamanho da collection em bytes.shardssó aparece na saída senameOnly: false.Consulte clusters fragmentados para mais detalhes.