Definição
listCollectionsRecupera informações, incluindo os nomes e opções de criação, para as collections e visualizações em um banco de dados.
O comando
listCollectionsretorna 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.mongoshprovides thedb.getCollectionInfos()and thedb.getCollectionNames()helper methods, as well as the show collections command.
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:
db.runCommand( { 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. Um predicado de consulta para filtrar a lista de coleções. You can specify a query predicate on any of the fields returned by |
| booleano | Opcional. Um sinalizador para indicar se o comando retorna apenas o nome e 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). Qualquer comentário definido em um comando |
Comportamento
Filtro
Use a filter to limit the results of listCollections. You can specify a filter on any of the fields returned in the listCollections result set.
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 travas, consulte Perguntas frequentes: Concorrência
Desconexão do cliente
If the client that issued listCollections disconnects before the operation completes, MongoDB marks listCollections for termination using killOp.
Restrição de estado do membro do conjunto de réplica
To run on a replica set member, listCollections operations require the member to be in PRIMARY or SECONDARY state. If the member is in another state, such as STARTUP2, the operation errors.
Acesso necessário
The listCollections command and its wrapper db.getCollectionInfos() require the listCollections action when access control is enforced. Users must have privileges that grant the listCollections action on the database to run 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 } )
Saída
listCollections.cursorUm documento que contém as informações necessárias para criar um cursor para documentos que contêm nomes de coleções e opções. As informações do cursor incluem o ID do cursor, o namespace completo para o comando e o primeiro lote de resultados. Cada documento no resultado do lote contém os seguintes campos:
CampoTipoDescriçãoname
String
Nome da collection.
type
String
Type of data store. Returns
collectionfor collections,viewfor views, andtimeseriesfor time series collection.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 coleção permanece o mesmo entre membros do conjunto de réplicas e de fragmentos em um cluster fragmentado.
idIndex
Documento
Fornece informações sobre o índice
_idpara a collection.
Se você não precisar de uma resposta de comando bruto, use os métodos de assistente db.getCollectionInfos() ou db.getCollectionNames().
Exemplo
Listar todas as collections
O banco de dados do music contém três collections, motorhead, taylorSwift e ramones.
Para obter uma lista de nomes de coleções, execute o comando listCollections com 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: