Definição
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 olistCollectionscomando.
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 |
| documento | Opcional. Um documento que especifica opções adicionais para o comando. Para obter uma lista de opções disponíveis, consulte Opções. |
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 Para obter um exemplo, consulte Retornar somente nomes de collections. |
| booleano | Opcional. Quando 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
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 } )
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
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.
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 collections
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' } ]
Retornar informações para uma coleção específica
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" } } ]
Informações de retorno para collections 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" } } ]