Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

listar Coleções

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Acesso necessário
  • Saída
  • Exemplo
  • Saiba mais
listCollections

Recupera informações, incluindo os nomes e opções de criação, para as collections evisualizações do em um banco de dados de dados.

O comando listCollections retorna um documento que contém uma lista não classificada de todas as coleções e visualizações no banco de banco de dados. Você pode usar o documento retornado para criar um cursor na coleção.

mongosh fornece os métodos auxiliares db.getCollectionInfos() e db.getCollectionNames().

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

O comando tem a seguinte sintaxe:

db.runCommand(
{
listCollections: 1,
filter: <document>,
nameOnly: <boolean>,
authorizedCollections: <boolean>,
comment: <any>
}
)

O comando pode assumir os seguintes campos opcionais:

Campo
Tipo
Descrição

filter

documento

Opcional. Um predicado de consulta para filtrar a lista de coleções.

Você pode especificar um predicado de query em qualquer um dos campos retornados por listCollections.

nameOnly

booleano

Opcional. Um sinalizador para indicar se o comando deve retornar apenas o nome e o tipo (view, collection ou timeseries) ou retornar o nome e outras informações.

O valor padrão é false.

Quando nameOnly é true, sua expressão filter só pode filtrar com base no nome e tipo de uma collection. Nenhum outro campo está disponível.

authorizedCollections

booleano

Opcional. Um sinalizador, quando configurado para true e usado com nameOnly: true, que permite a um usuário sem o privilégio exigido (ou seja, ação listCollections no banco de dados) para executar o comando quando o controle de acesso é imposto.

Quando as opções authorizedCollections e nameOnly são definidas como true, o comando retorna apenas as collections para as quais o usuário tem privilégios. Por exemplo, se um usuário tiver find ação em collections específicas, o comando retornará somente estas collections; ou, se um usuário tiver find ou qualquer outra ação, no recurso do banco de dados, o comando listará todas as collections no banco de dados.

O valor padrão é false. Ou seja, o usuário deve ter a ação listCollections no banco de dados para executar o comando.

Para um usuário que tenha a ação listCollections no banco de dados, essa opção não tem efeito, pois o usuário tem privilégios para listar as collections no banco de dados.

Quando usado sem nameOnly: true, esta opção não tem efeito. Ou seja, o usuário deve ter os privilégios exigidos para executar o comando quando o controle de acesso é imposto. Caso contrário, o usuário não pode executar o comando.

comment

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).

Qualquer comentário definido em um comando listCollections é herdado por todos os comandos getMore subsequentes executados no cursor listCollections.

Use um filtro para limitar os resultados de listCollections. Você pode especificar um filter em qualquer um dos campos retornados no listCollections conjunto de resultados .

listCollections travar comportamento:

  • Antes do MongoDB 5.0, listCollections obtém um bloqueio compartilhado de intenção em cada collection no banco de dados quando listCollections mantém um bloqueio compartilhado de intenção no banco de dados.

  • A partir do MongoDB 5.0, listCollections não utiliza um bloqueio compartilhado de intenção em uma collection ou banco de dados. listCollections não é bloqueado por operações que mantêm um bloqueio de escrita exclusivo em uma collection.

Para saber mais sobre travas, consulte Perguntas frequentes: Concorrência

A partir do MongoDB 4.2, se o cliente que emitiu listCollections se desconectar antes da conclusão da operação, o MongoDB marcará listCollections para encerramento usando killOp.

Para executar em um membro do conjunto de réplicas, as operações delistCollections 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.

O comando listCollections requer a ação listCollections quando o controle de acesso é aplicado. Os usuários devem ter privilégios que concedam a ação listCollections no banco de dados para executar listCollections.

Por exemplo, o comando a seguir concede o privilégio de executar db.getCollectionInfos() no banco de dados test:

{ resource: { db: "test", collection: "" }, actions: [ "listCollections" ] }

O papel integrado read fornece o privilégio para executar listCollections para um banco de dados específico.

Usuários sem o privilégio de read exigido podem executar listCollections quando authorizedCollections e nameOnly estão configurados para true. Neste caso, o comando retorna os nomes e tipos das collections onde o usuário tem privilégios.

Por exemplo, considere um usuário com um role que concede o seguinte privilégio find:

{ resource: { db: "sales", collection: "currentQuarter" }, actions: [ "find" ] }

O usuário pode executar listCollections se authorizedCollections e nameOnly estiverem configurados para true.

db.runCommand(
{
listCollections: 1.0,
authorizedCollections: true,
nameOnly: true
}
)

A operação retorna o nome e o tipo da collection currentQuarter.

No entanto, as seguintes operações retornam um erro se o usuário não tiver a autorização de acesso necessária:

db.runCommand(
{
listCollections: 1.0,
authorizedCollections: true
}
)
db.runCommand(
{
listCollections: 1.0,
nameOnly: true
}
)

O método mongosh show collections é semelhante a:

db.runCommand(
{
listCollections: 1.0,
authorizedCollections: true,
nameOnly: true
}
)
  • Para usuários com o acesso exigido, o show collections lista as collections fora do sistema para o banco de dados.

  • Para usuários sem o acesso exigido, o show collections lista somente as collections para as quais os usuários têm privilégios.

listCollections.cursor

Um documento que contém informações com as quais criar um cursor para documentos que contêm nomes de collection e opções. As informações do cursor incluem o ID do cursor, o namespace completo para o comando, bem como o primeiro lote de resultados. Cada documento no resultado do lote contém os seguintes campos:

Campo
Tipo
Descrição

name

String

Nome da collection.

type

String

Tipo de armazenamento de dados. Retorna collection para coleções, view para visualizações e timeseries para coleção de séries temporais.

opções

Documento

Opções de collection.

Essas opções correspondem diretamente às opções disponíveis no db.createCollection(). Para as descrições sobre as opções, consulte db.createCollection().

informações

Documento

Lista os seguintes campos relacionados à collection:

Somente leitura
boolean. Se true o armazenamento de dados é somente leitura.
uuid
UUID. Uma vez estabelecido, o UUID da collection não muda. O UUID da collection permanece o mesmo entre membros do conjunto de réplicas e de shards em um cluster fragmentado.

idIndex

Documento

Fornece informações sobre o índice _id para a collection.

listCollections.ok

O valor de retorno do comando. Um valor de 1 indica o sucesso.

O banco de dados do music contém três collections, motorhead, taylorSwift e ramones.

Para listar as coleções no banco de dados, você pode utilizar o comando integrado mongosh, mostrar coleções.

show collections

A saída é:

motorhead
ramones
taylorSwift

Para obter uma lista semelhante com o comando de collections do listCollections, utilize a opção nameOnly.

db.runCommand(
{
listCollections: 1.0,
nameOnly: true
}
)

A saída é:

{
cursor: {
id: Long("0"),
ns: 'music.$cmd.listCollections',
firstBatch: [
{ name: 'motorhead', type: 'collection' },
{ name: 'taylorSwift', type: 'collection' },
{ name: 'ramones', type: 'collection' }
]
},
ok: 1
}

Para obter informações mais detalhadas, remova a opção nameOnly.

db.runCommand(
{
listCollections: 1.0
}
)

A saída é:

{
cursor: {
id: Long("0"),
ns: 'music.$cmd.listCollections',
firstBatch: [
{
name: 'motorhead',
type: 'collection',
options: {},
info: {
readOnly: false,
uuid: new UUID("09ef1858-2831-47d2-a3a7-9a29a9cfeb94")
},
idIndex: { v: 2, key: { _id: 1 }, name: '_id_' }
},
{
name: 'taylorSwift',
type: 'collection',
options: {},
info: {
readOnly: false,
uuid: new UUID("6c46c8b9-4999-4213-bcef-9a36b0cff228")
},
idIndex: { v: 2, key: { _id: 1 }, name: '_id_' }
},
{
name: 'ramones',
type: 'collection',
options: {},
info: {
readOnly: false,
uuid: new UUID("7e1925ba-f2f9-4e42-90e4-8cafd434a6c4")
},
idIndex: { v: 2, key: { _id: 1 }, name: '_id_' }
}
]
},
ok: 1
}

Para opções de collection:

Para obter as informações da collection:

Voltar

killOp