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.
Menu Docs

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

Optional. A document that specifies additional options for the command. For a list of available options, see Options.

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.

For an example, see Return Only Collection Names.

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

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
}
)

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.

If the client that issued db.getCollectionInfos() disconnects before the operation completes, MongoDB marks db.getCollectionInfos() for termination using 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 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"
}
}
]

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' }
]

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

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