Definição
Novidades na versão 8.0.10.
Aviso
O estágio de agregação $listClusterCatalog
não é suportado e não é garantido que seja estável em uma versão futura. Não crie uma funcionalidade que dependa de um formato de saída específico desse estágio, pois a saída pode mudar em uma versão futura.
O estágio de agregação do $listClusterCatalog
gera informações para coleções em um cluster, incluindo nomes e opções de criação.
$listClusterCatalog
deve ser o primeiro estágio do pipeline.
Você deve chamar esse estágio de um banco de dados. Quando você executa esse estágio no banco de dados admin, ele retorna informações sobre todas as collections no cluster. Quando você o executa em qualquer outro banco de dados, ele retorna informações sobre todas as collections dentro desse banco de dados.
Sintaxe
O estágio tem a seguinte sintaxe:
{ $listClusterCatalog: { shards: true, balancingConfiguration: true } }
O estágio $listClusterCatalog
recebe um documento com os seguintes campos opcionais:
Campo | Descrição |
---|---|
| Opcional. Você pode especificar |
| Opcional. Se você especificar |
Saída
$listClusterCatalog
retorna um documento por coleção. Cada documento pode conter os seguintes campos:
{ "ns" : <string>, "db" : <string>, "type" : <string>, "idIndex" : <document>, "options" : <document>, "info" : <document>, "sharded" : <boolean>, "shardKey" : <document>, "shards" : [<string>], "balancingEnabled" : <boolean>, "balancingEnabledReason" : <document>, "autoMergingEnabled" : <boolean>, "chunkSize" : <int> }
A tabela a seguir contém informações sobre os campos que $listClusterCatalog
retorna:
Campo | Tipo | Retornado com query padrão | Descrição |
---|---|---|---|
| string | true | O namespace completo da coleção, no formato |
| string | true | Nome do banco de dados onde a collection está localizada. |
| string | true | Tipo de armazenamento de dados. Retorna |
| documento | true | Fornece informações sobre o índice |
| documento | true | O documento devolvido contém os seguintes campos:
Essas opções correspondem diretamente às opções disponíveis no |
| documento | true | Lista os seguintes campos relacionados à collection:
|
| booleano | true | Especifica se a collection é fragmentada ou não. Este campo também está presente em servidores do conjunto de réplicas. |
| documento | presente apenas se a collection for fragmentada | A chave de fragmento da coleção. |
| array de strings | falso, deve especificar fragmentos no documento de entrada | Fragmentos por coleção. |
| booleano | falso, deve especificar balancingConfiguration no documento de entrada | Especifica se o balanceamento está habilitado para essa collection. Este campo só estará presente se a collection estiver fragmentada. |
| documento | falso, deve especificar balancingConfiguration no documento de entrada | Retorna informações sobre qual comando foi usado para alternar o balanceamento. Este documento tem os seguintes campos:
Este campo só estará presente se a collection estiver fragmentada. |
| booleano | falso, deve especificar balancingConfiguration no documento de entrada | Especifica se o AutoMerger está habilitado para a coleção. Este campo só estará presente se a collection estiver fragmentada. |
| int | falso, deve especificar balancingConfiguration no documento de entrada | Retorna o tamanho do chunk, em MiB, da collection. Este campo só estará presente se a collection estiver fragmentada. |
Restrições
Se você executar este comando no banco de dados admin
, precisará da ação de privilégio listClusterCatalog
, que está incluída na função clusterMonitor
.
Para executar esse comando em um banco de dados específico, você precisa da ação de privilégio listCollections
, que está incluída na função read
.
Exemplos
Listar informações de todas as collections
O exemplo seguinte retorna informações padrão de todas as coleções no banco de dados do sample_mflix
:
use sample_mflix db.aggregate([ { $listClusterCatalog: {} } ])
Quando você executa este exemplo, ele retorna uma array contendo um documento para cada coleção no banco de dados do sample_mflix
. Cada um desses documentos contém os campos padrão descritos na tabela anterior:
[ { ns: "sample_mflix.movies", db: "sample_mflix", type: "collection", idIndex: { v: 2, key: { _id: 1 }, name: '_id' }, options: { ... }, sharded: false, info: { readOnly: false, uuid: new UUID("6c46c8b9-4999-4213-bcef-9a36b0cff228") } }, { ns: "sample_mflix.comments", db: "sample_mflix", type: "collection", options: { ... }, sharded: true, info: { readOnly: true, uuid: new UUID("6c448eb9-4090-4213-bbaf-9a36bb7fc98e") } shardKey: { _id: 1} }, ... ]
Configuração de balanceamento
Você pode retornar os campos e informações padrão sobre a configuração de balanceamento de todas as collections em um banco de dados com collections fragmentadas.
O exemplo a seguir retorna configurações de balanceamento para o banco de dados sample_mflix
:
use sample_mflix db.aggregate([ { $listClusterCatalog: { balancingConfiguration: true } } ])
O exemplo anterior retorna uma array contendo um documento para cada coleção. Cada um desses documentos contém os campos padrão junto com os campos balancingEnabled
, balancingEnabledReason
, autoMergingEnabled
e chunkSize
para collections fragmentadas. O seguinte código fornece um exemplo desta saída:
[ { ns: "sample_mflix.movies", db: "sample_mflix", type: "collection", idIndex: { v: 2, key: { _id: 1 }, name: '_id' }, options: { ... }, sharded: false, ... }, { ns: "sample_mflix.comments", db: "sample_mflix", type: "collection", sharded: true, shardKey: { _id: 1}, balancingEnabled: true, balancingEnabledReason: { enableBalancing: true, allowMigrations: false }, autoMergingEnabled: false, chunkSize: 256, ... }, ... ]