Menu Docs
Página inicial do Docs
/ /

db.getCollectionInfos() (método mongosh)

db.getCollectionInfos(filter, options)

Retorna uma array de documentos que contêm informações de collection ou 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 db.getCollectionInfos() assistente envolve o listCollections comando.

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 db.getCollectionInfos()por.

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 obter um exemplo, consulte Retornar somente nomes de collections.

authorizedCollections

booleano

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

  • 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 no banco de dados para executar o listCollections 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 listCollections comando e seu wrapper db.getCollectionInfos() exigem a ação quando listCollections o controle de acesso é imposto. Os usuários devem ter privilégios que concedam a listCollections ação no banco de dados para listCollections executar.

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 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 collections 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 solicitar informações de collection para uma collection específica, especifique o nome da collection no documento de filtro. O exemplo a seguir retorna uma array com um único documento que detalha as informações de collection para a collection 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"
}
}
]

Voltar

db.getCollection

Nesta página