Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

db.getCollectionInfos() (método mongosh)

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 comando listCollections.

O método db.getCollectionInfos() tem os seguintes parâmetros:

Parâmetro
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 db.getCollectionInfos().

options

documento

opcional. Um documento que especifica opções adicionais para o comando. Para obter uma lista de opções disponíveis, consulte Opções.

Você pode especificar as seguintes opções no documento options de um comando db.getCollectionInfos():

Opção
Tipo
Descrição

nameOnly

booleano

Opcional. Um sinalizador para indicar se o comando retorna apenas o nome e tipo (view, collection ou timeseries) ou retorna 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.

Para um exemplo, consulte Retornar apenas nomes de coleção.

authorizedCollections

booleano

Opcional. Quando definido como true e usado com nameOnly: true, permite que um usuário sem o privilégio necessário (como a ação listCollections no banco de dados) execute db.getCollectionInfos() 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 a ação find em coleções específicas, o comando retornará somente estas coleções.

  • Se um usuário tiver qualquer ação de permissão no recurso do banco de dados , o comando listará todas as coleções no banco de dados.

O valor padrão é false, o que significa que 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.

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

O comando listCollections e seu wrapper db.getCollectionInfos() exigem a ação listCollections quando o controle de acesso é imposto. 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.

Se o cliente que emitiu db.getCollectionInfos() se desconectar antes da conclusão da operação, o MongoDB marcará db.getCollectionInfos() para encerramento usando killOp.

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.

O seguinte retorna informações para todas as collections no banco de dados example:

use exampledb.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" } } ]

Para retornar somente os nomes das coleções no banco de dados atual, especifique a opção nameOnly: true. Por exemplo:

use exampledb.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' }]

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 exampledb.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" } }]

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 exampledb.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" } }]