Definición
checkMetadataConsistencyRealiza una serie de verificaciones de coherencia en los metadatos de particionado para un clúster, base de datos o colección. El comando devuelve un cursor con todos o un agrupar de los Se encontraron resultados inconsistentes.
Tip
En
mongosh, este comando también se puede ejecutar a través de los métodos asistentesdb.checkMetadataConsistency(),db.collection.checkMetadataConsistency()osh.checkMetadataConsistency().Los métodos asistente son convenientes para usuarios de
mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.Ejecute este comando después de realizar operaciones de mantenimiento importantes, como actualizaciones y degradaciones, para comprobar el estado del catálogo.
Por defecto, el comando no comprueba la coherencia de los índices entre las particiones. Para comprobar índices, ajuste la opción
checkIndexes.Nuevo en la versión 7.0.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Nota
El comando checkMetadataConsistency solo es ejecutable al conectarse a mongos. mongod no soporta este comando.
Sintaxis
Para verificar todo el clúster en busca de inconsistencias de metadatos de fragmentación, ejecute el comando desde la base de datos
admin.db.adminCommand( { checkMetadataConsistency: 1 } ) Para comprobar la base de datos en busca de inconsistencias en los metadatos de partición, ejecuta el comando desde el contexto de la base de datos:
use cars db.runCommand( { checkMetadataConsistency: 1 } ) Para verificar si hay inconsistencias en los metadatos de fragmentación de una colección, ejecute el comando con el nombre de la colección:
use library db.runCommand( { checkMetadataConsistency: "authors", } )
Campos de comandos
Campo | Tipo | Descripción |
|---|---|---|
| entero o cadena de texto | Especifica la colección a revisar.
|
| booleano | Establece si el comando también verifica los índices en los metadatos de fragmentación. Para obtener más información, consulte Verificar índices. |
| Documento | Configura el cursor de retorno. |
| entero | Número máximo de resultados de incoherencias que se incluirán en cada lote. |
| entero | Opcional. Tiempo máximo en milisegundos que se permite al comando esperar para adquirir un bloqueo de base de datos. También puedes utilizar este campo junto con |
Salida
El comando checkMetadataConsistency devuelve un cursor con un documento para cada inconsistencia encontrada en los metadatos de particionado. Para obtener más información, consulta Tipos de incoherencia.
El documento de devolución tiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| Documento | Cursor con los resultados de las comprobaciones de inconsistencias. |
| entero | Un entero de 64 bits indica el ID del cursor. Utilice el valor Si el cursor devuelve una ID de |
| string | Se verificaron la base de datos y la colección para detectar inconsistencias. |
| arreglo | Resultados de las comprobaciones de coherencia de metadatos. |
| booleano | Indica si el comando fue exitoso. |
Comportamiento
Resultados por lote
El comando checkMetadataConsistency devuelve resultados agrupados. Para personalizar el tamaño del lote, utilice la opción batchSize:
var cur = db.runCommand( { checkMetadataConsistency: 1, cursor: { batchSize: 10 } } )
Si el campo cursor.id es mayor que 0, puedes usar el comando getMore para recuperar el siguiente agrupar de resultados.
Check Indexes
El comando checkMetadataConsistency no verifica los índices por defecto. Para verificar la coherencia de metadatos e índices, utiliza la opción checkIndexes:
db.runCommand( { checkMetadataConsistency: 1, checkIndexes: true } )
Ejemplo
Utilice para ejecutar runCommand() el checkMetadataConsistency comando:
db.runCommand( { checkMetadataConsistency: 1 } )
Ejemplo de salida:
{ cursor: { id: Long("0"), ns: "test.$cmd.aggregate", firstBatch: [ { type: "MisplacedCollection", description: "Unsharded collection found on shard different from database primary shard", details: { namespace: "test.authors", shard: "shard02", localUUID: new UUID("1ad56770-61e2-48e9-83c6-8ecefe73cfc4") } } ], }, ok: 1 }