Definição
Novidades na versão 8.1.
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,     ...   },   ... ] 
Os exemplos do Node.js nesta página utilizam o banco de dados do sample_mflix a partir dos conjuntos de dados de amostra do Atlas. Para saber como criar um cluster gratuito do MongoDB Atlas e carregar os conjuntos de dados de exemplo, consulte Introdução na documentação do driver do MongoDB Node.js
Para usar o driver Node.js do MongoDB para adicionar um estágio $listClusterCatalog a um pipeline de agregação , inclua o operador $listClusterCatalog em um objeto de pipeline.
Listar informações de todas as collections em um banco de dados
O exemplo abaixo cria um estágio de pipeline que retorna informações para todas as collections no banco de dados sample_mflix. O exemplo então executa o pipeline:
const pipeline = [{ $listClusterCatalog: {} }]; const db = client.db("sample_mflix"); const cursor = db.aggregate(pipeline); return cursor; 
Listar informações de todas as collections em um cluster
O exemplo a seguir cria um estágio de pipeline que retorna informações para todas as collections em um cluster. O exemplo então executa o pipeline:
const pipeline = [{ $listClusterCatalog: {} }]; const adminDB = client.db("admin"); const cursor = adminDB.aggregate(pipeline); return cursor; 
Configuração de balanceamento
O exemplo a seguir cria um pipeline que inclui informações de balanceamento nos documentos de retorno para todas as collections no banco de dados sample_mflix . O exemplo então executa o pipeline:
const db = client.db("sample_mflix"); const pipeline = [{ $listClusterCatalog: {balancingConfiguration: true} }]; const cursor = db.aggregate(pipeline); return cursor;