Definición
Nuevo en la versión 8.1.
Advertencia
La etapa de agregación $listClusterCatalog no es compatible y no se garantiza su estabilidad en futuras versiones. No cree funcionalidades que dependan de un formato de salida específico de esta etapa, ya que este podría cambiar en futuras versiones.
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 del proceso.
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. Puede especificar |
| Opcional. Si especifica |
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 devuelve $listClusterCatalog:
Campo | Tipo | Devuelto con consulta predeterminada | 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 almacén de datos. Devuelve |
| Documento | true | Proporciona información sobre el |
| 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 fragmento de la colección. |
| matriz 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 | Especifica si el balanceo está habilitado para esa colección. Este campo solo está presente si la colección está fragmentada. |
| Documento | falso, debe especificar balancingConfiguration en el documento de entrada | Devuelve información sobre el comando utilizado para alternar el balanceo. Este documento contiene los siguientes campos:
Este campo solo está presente si la colección está fragmentada. |
| booleano | falso, debe especificar balancingConfiguration en el documento de entrada | Especifica si la fusión automática está habilitada para la colección. Este campo solo está presente si la colección está fragmentada. |
| Int | falso, debe especificar balancingConfiguration en el documento de entrada |
Restricciones
Si ejecuta este comando contra la admin base de datos, necesita la listClusterCatalog acción de privilegio, que está incluida en el clusterMonitor rol.
Para ejecutar este comando en una base de datos específica, necesita la listCollections acción de privilegio, que está incluida en el read rol.
Ejemplos
Lista de información de todas las colecciones
El siguiente ejemplo devuelve información predeterminada de todas las colecciones en la base de datos sample_mflix:
use sample_mflix db.aggregate([ { $listClusterCatalog: {} } ])
Al ejecutar este ejemplo, se devuelve una matriz que contiene un documento para cada colección de la base de datos sample_mflix. Cada uno de estos documentos contiene los campos predeterminados 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 equilibrio
Puede devolver los campos predeterminados e información sobre la configuración de equilibrio para todas las colecciones en una base de datos con colecciones fragmentadas.
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 una matriz 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 las colecciones fragmentadas. 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 canalización que devuelve información de todas las colecciones de la base de datos sample_mflix. A continuación, el ejemplo ejecuta la canalización:
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 canalización que devuelve información de todas las colecciones de un clúster. A continuación, el ejemplo ejecuta la canalización:
const pipeline = [{ $listClusterCatalog: {} }]; const adminDB = client.db("admin"); const cursor = adminDB.aggregate(pipeline); return cursor;
Configuración de equilibrio
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;