Definição
db.getCollectionInfos(filter, options)Retorna um array de documentos que contêm informações da coleção ou de visualização, como nome e opções, para o banco de dados atual. Os resultados dependem do privilégio do usuário. Para obter detalhes, consulte Acesso necessário.
O assistente
db.getCollectionInfos()envolve o comandolistCollections.
Sintaxe
O método db.getCollectionInfos() tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
|---|---|---|
| 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 |
| documento | Optional. A document that specifies additional options for the command. For a list of available options, see Options. |
Opções
Você pode especificar as seguintes opções no documento options de um comando db.getCollectionInfos():
Opção | Tipo | Descrição |
|---|---|---|
| booleano | Opcional. Um sinalizador para indicar se o comando retorna apenas o nome e tipo ( O valor padrão é Quando For an example, see Return Only Collection Names. |
| booleano | Opcional. Quando definido como Quando as opções
O valor padrão é Para um usuário que tenha a ação Quando usado sem |
Compatibilidade
Esse método 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
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.
For example, the following command grants the privilege to run db.getCollectionInfos() against the test database:
{ 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.
Comportamento
Desconexão do cliente
If the client that issued db.getCollectionInfos() disconnects before the operation completes, MongoDB marks db.getCollectionInfos() for termination using killOp.
Restrição de estado do membro do conjunto de réplica
Para executar em um nó do conjunto de réplicas, as operações delistCollections exigem que o nó esteja no estado PRIMARY ou SECONDARY. Se o nó estiver em outro estado, como STARTUP2, haverá erros na operação.
Exemplos
Informações de retorno para todas as coleções em um banco de dados
O seguinte retorna informações para todas as collections no banco de dados example:
use example db.getCollectionInfos()
[ { "name" : "employees", "type" : "collection", "options" : { "flags" : 1, "validator" : { "$or" : [ { "phone" : { "$exists" : true } }, { "email" : { "$exists" : true } } ] } }, "info" : { "readOnly" : false, "uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.employees" } }, { "name" : "products", "type" : "collection", "options" : { "flags" : 1 }, "info" : { "readOnly" : false, "uuid" : UUID("1bc898b2-3b91-45e4-9d8b-0be462d5a157") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.products" } }, { "name" : "mylogs", "type" : "collection", "options" : { "capped" : true, "size" : 256 }, "info" : { "readOnly" : true, "uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.mylogs" } } ]
Retornar somente nomes de coleções
Para retornar somente os nomes das coleções no banco de dados atual, especifique a opção nameOnly: true. Por exemplo:
use example db.getCollectionInfos( {}, { nameOnly: true } )
[ { name: 'products', type: 'collection' }, { name: 'weather', type: 'timeseries' }, { name: 'system.buckets.weather', type: 'collection' }, { name: 'system.views', type: 'collection' }, { name: 'sales', type: 'collection' } ]
Retornar informações para uma coleção específica
Para a solicitação de informações de uma coleção específica, especifique o nome da coleção no documento de filtro. O exemplo a seguir retorna um array com um único documento que detalha as informações de coleção para a coleção employees no banco de dados example.
use example db.getCollectionInfos( { name: "employees" } )
[ { "name" : "employees", "type" : "collection", "options" : { "flags" : 1, "validator" : { "$or" : [ { "phone" : { "$exists" : true } }, { "email" : { "$exists" : true } } ] } }, "info" : { "readOnly" : false, "uuid" : UUID("222e18ca-4a10-4a42-a8fe-c39255cc4c55") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.employees" } } ]
Informações de retorno para coleções somente leitura
Você pode especificar um filtro em qualquer um dos campos retornados por db.getCollectionInfos().
Por exemplo, o comando a seguir retorna informações para todas as collections no banco de dados example onde info.readOnly é true:
use example db.getCollectionInfos( { "info.readOnly" : true } )
[ { "name" : "mylogs", "type" : "collection", "options" : { "capped" : true, "size" : 256 }, "info" : { "readOnly" : true, "uuid" : UUID("8e62116d-b6a0-490a-808c-258ccb7ea947") }, "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "example.mylogs" } } ]