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 uma lista não classificada de todas as coleções e visualizações no banco de dados. Utilize 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: The fully managed service for MongoDB deployments in the cloud
Observação
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
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 que, quando definido como Quando as opções O valor padrão é Para usuários que têm 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. 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 coleção 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 às opções disponíveis em
db.createCollection(). Para descrições de 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 sample_mflix contém coleções como movies, theaters, users e outras.
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 } )
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection' }, { name: 'theaters', type: 'collection' }, { name: 'users', type: 'collection' }, { name: 'embedded_movies', type: 'collection' }, { name: 'sessions', type: 'collection' }, { name: 'comments', type: 'collection' }, { name: 'system.views', type: 'collection' } ] }, ok: 1 }
Para obter informações mais detalhadas, remova a opção nameOnly.
db.runCommand( { listCollections: 1.0 } )
{ cursor: { id: Long('0'), ns: 'sample_mflix.$cmd.listCollections', firstBatch: [ { name: 'movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'theaters', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'users', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'embedded_movies', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'sessions', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'comments', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'system.views', type: 'collection', options: {}, info: { ... }, idIndex: { v: 2, key: { _id: 1 }, name: '_id_' } } ] }, ok: 1 }
Saiba mais
Para opções de collection:
Para obter as informações da collection: