Definição
listCollectionsRecupera 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
listCollectionsretorna um documento que contém informações que você pode utilizar para criar um cursor na collection.mongoshfornece os métodos auxiliaresdb.getCollectionInfos()edb.getCollectionNames().
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
O comando tem a seguinte sintaxe:
{ listCollections: 1, filter: <document>, nameOnly: <boolean>, authorizedCollections: <boolean>, comment: <any> }
Campos de comando
O comando pode assumir os seguintes campos opcionais:
Campo | Tipo | Descrição |
|---|---|---|
| documento | Opcional. Uma expressão de query para filtrar a lista de collections. Você pode especificar uma expressão de query em qualquer um dos campos retornados |
| booleano | Opcional. Um sinalizador para indicar se o comando deve retornar apenas o nome e o tipo ( O valor padrão é Quando |
| booleano | Opcional. Um sinalizador, quando configurado para Quando as opções O valor padrão é Para um usuário que tenha a ação Quando usado sem |
| 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
Filtro
Use um filtro para limitar os resultados de listCollections. É possível especificar um filter em qualquer um dos campos retornados no conjunto de resultados listCollections.
Bloqueios
listCollections travar comportamento:
Antes do MongoDB 5.0,
listCollectionsobtém um bloqueio compartilhado de intenção em cada collection no banco de dados quandolistCollectionsmantém um bloqueio compartilhado de intenção no banco de dados.A partir do MongoDB 5.0,
listCollectionsnão utiliza um bloqueio compartilhado de intenção em uma collection ou banco de dados.listCollectionsnão é bloqueado por operações que mantêm um bloqueio de escrita exclusivo em uma collection.
Para saber mais sobre bloqueio, consulte Que tipo de bloqueio o MongoDB usa?.
Desconexão do cliente
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.
Restrição de estado do membro do conjunto de réplica
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.
Acesso necessário
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 } )
show collections
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 collectionslista as collections fora do sistema para o banco de dados.Para usuários sem o acesso exigido, o
show collectionslista somente as collections para as quais os usuários têm privilégios.
Saída
listCollections.cursorUm 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:
CampoTipoDescriçãoname
String
Nome da collection.
type
String
Tipo de armazenamento de dados. Retorna
collectionpara coleções,viewpara visualizações etimeseriespara 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, consultedb.createCollection().informações
Documento
Lista os seguintes campos relacionados à collection:
- Somente leitura
boolean. Setrueo 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.
Novidade na versão 3.6.
idIndex
Documento
Fornece informações sobre o índice
_idpara a collection.
Exemplo
Listar todas as collections
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 }
Saiba mais
Para opções de collection:
Para obter as informações da collection: