Definición
checkMetadataConsistencyRealiza una serie de comprobaciones de consistencia en los metadatos de fragmentación de un clúster, una base de datos o una colección. El comando devuelve un cursor con todos los metadatos o un lote de ellos. Se encontraron resultados inconsistentes.
Tip
En
mongosh, este comando también se puede ejecutar a través de los métodos auxiliares,db.checkMetadataConsistency()db.collection.checkMetadataConsistency()sh.checkMetadataConsistency()o.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 operaciones de mantenimiento importantes, como actualizaciones y degradaciones, para verificar el estado del catálogo.
De forma predeterminada, el comando no comprueba la coherencia de los índices entre los fragmentos. Para comprobarlos, configure 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 se puede ejecutar cuando se conecta a mongos. mongod no admite 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 verificar si hay inconsistencias en los metadatos de fragmentación de la base de datos, ejecute 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 Comprobar índices. |
| Documento | Configura el cursor de retorno. |
| entero | Número máximo de resultados de inconsistencia a incluir 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 puede usar este campo con. Por |
Salida
El checkMetadataConsistency comando devuelve un cursor con un documento por cada inconsistencia detectada en los metadatos de fragmentación. Para obtener más información, consulte Tipos de inconsistencia.
El documento de devolución tiene los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| Documento | Cursor con los resultados de las comprobaciones de inconsistencia. |
| entero | Un 64entero de bits indica el ID del cursor. Use el Si el cursor devuelve un 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 del 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 cursor.id campo es mayor 0 que, puede usarlo con el comando para recuperar el siguiente lote de getMore 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 }