Definición
Nuevo en la versión 8.1.
Advertencia
La etapa de agregación $listClusterCatalog no es compatible y no se garantiza que sea estable en una futura versión. No cree funcionalidades que dependan de un formato de salida específico de esta etapa, ya que la salida puede cambiar en una versión futura.
La etapa de agregación $listClusterCatalog genera información para las colecciones de un clúster, incluidos nombres y opciones de creación.
$listClusterCatalog debe ser la primera etapa en la pipeline.
Debes llamar a esta etapa contra una base de datos. Cuando ejecutas esta etapa contra la Labase de datos de administración devuelve información sobre todas las colecciones del clúster. Al ejecutarla en cualquier otra base de datos, devuelve información sobre todas las colecciones dentro de esa base de datos.
Sintaxis
La etapa tiene la siguiente sintaxis:
{ $listClusterCatalog: { shards: true, balancingConfiguration: true } }
La etapa $listClusterCatalog toma un documento con los siguientes campos opcionales:
Campo | Descripción |
|---|---|
| opcional. Puedes especificar |
| opcional. Si especificas |
Salida
$listClusterCatalog devuelve un documento por colección. Cada documento puede contener los siguientes 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> }
La siguiente tabla contiene información sobre los campos que $listClusterCatalog devuelve:
Campo | Tipo | Devuelto con la query por defecto | Descripción |
|---|---|---|---|
| string | true | El espacio de nombres completo de la colección, en el formato |
| string | true | Nombre de la base de datos donde se encuentra la colección. |
| string | true | Tipo de tienda de datos. Devuelve |
| Documento | true | Proporciona información sobre el índice |
| Documento | true | El documento devuelto contiene los siguientes campos:
Estas opciones corresponden directamente a las opciones disponibles en |
| Documento | true | Enumere los siguientes campos relacionados con la colección:
|
| booleano | true | Especifica si la colección está fragmentada o no. Este campo también está presente en los servidores de conjuntos de réplicas. |
| Documento | Sólo está presente si la colección está fragmentada | La clave de partición de la colección. |
| Arreglo de cadenas | false, se debe especificar particiones en el documento de entrada | Fragmentos por colección. |
| booleano | falso, debe especificar balancingConfiguration en el documento de entrada | Se especifica si la compensación está habilitada para esa colección. Este campo solo está presente si la colección es particionada. |
| Documento | falso, debe especificar balancingConfiguration en el documento de entrada | Devuelve información sobre qué comando se ha utilizado para alternar el equilibrado. Este documento contiene los siguientes campos:
Este campo solo está presente si la colección está particionada. |
| booleano | falso, debe especificar balancingConfiguration en el documento de entrada | Especifica si el AutoMerger está habilitado para la colección. Este campo solo está presente si la colección está particionada. |
| Int | falso, debe especificar balancingConfiguration en el documento de entrada | Devuelve el tamaño de fragmento en MiB de la colección. Este campo solo está presente si la colección está particionada. |
Restricciones
Si ejecutas este comando contra la base de datos admin, necesitas la acción de privilegio listClusterCatalog, que está incluida en el rol clusterMonitor.
Para ejecutar este comando en una base de datos específica, necesitas la acción de privilegio listCollections, que se incluye en el rol read.
Ejemplos
Lista de información de todas las colecciones
El siguiente ejemplo devuelve información por defecto de todas las colecciones en la base de datos sample_mflix:
use sample_mflix db.aggregate([ { $listClusterCatalog: {} } ])
Cuando ejecutas este ejemplo, devuelve un arreglo que contiene un documento para cada colección en la base de datos sample_mflix. Cada uno de estos documentos contiene los campos por defecto descritos en la tabla 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} }, ... ]
Configuración de Plan de Balanceo
Puede devolver los campos por defecto y la información sobre la configuración del balanceo para todas las colecciones en una base de datos con colecciones particionadas.
El siguiente ejemplo devuelve configuraciones de equilibrio para la base de datos sample_mflix:
use sample_mflix db.aggregate([ { $listClusterCatalog: { balancingConfiguration: true } } ])
El ejemplo anterior devuelve un arreglo que contiene un documento para cada colección. Cada uno de estos documentos contiene los campos predeterminados junto con los campos balancingEnabled, balancingEnabledReason, autoMergingEnabled y chunkSize para colecciones particionadas. El siguiente código proporciona un ejemplo de esta salida:
[ { 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, ... }, ... ]
Los ejemplos de Node.js en esta página utilizan la base de datos sample_mflix de los conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Primeros pasos en la documentación del controlador de MongoDB Node.js.
Para usar el driver MongoDB Node.js para agregar una etapa $listClusterCatalog a un pipeline de agregación, incluya el operador $listClusterCatalog en un objeto pipeline.
Listar información de todas las colecciones en una base de datos
El siguiente ejemplo crea una etapa de la pipeline que devuelve información para todas las colecciones de la base de datos sample_mflix. El ejemplo luego ejecuta el pipeline:
const pipeline = [{ $listClusterCatalog: {} }]; const db = client.db("sample_mflix"); const cursor = db.aggregate(pipeline); return cursor;
Listar información de todas las colecciones en un clúster
El siguiente ejemplo crea una etapa de pipeline que devuelve información de todas las colecciones en un clúster. El ejemplo luego ejecuta el pipeline:
const pipeline = [{ $listClusterCatalog: {} }]; const adminDB = client.db("admin"); const cursor = adminDB.aggregate(pipeline); return cursor;
Configuración de Plan de Balanceo
El siguiente ejemplo crea una canalización que incluye información de balance en los documentos de retorno para todas las colecciones de la base de datos sample_mflix. A continuación, el ejemplo ejecuta la canalización:
const db = client.db("sample_mflix"); const pipeline = [{ $listClusterCatalog: {balancingConfiguration: true} }]; const cursor = db.aggregate(pipeline); return cursor;