Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Diagnósticos

validate (comando de base de datos)

validate

El comando validate verifica los datos y los índices de una colección para garantizar su exactitud y devuelve los resultados.

Tip

En mongosh, este comando también se puede ejecutar a través del validate() método asistente.

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.

Modificado en la versión 5.0.

A partir de la versión 5.0, el comando validate también puede encontrar inconsistencias en la colección y corregirlas si es posible.

Las inconsistencias del índice incluyen:

  • Un índice es multiclave, pero no hay campos multiclave.

  • Un índice tiene rutas multikeyPath que cubren campos que no son multikey.

  • Un índice no tiene multikeyPaths, pero hay documentos multikey (para índices creados antes de 3.4).

Si el comando detecta alguna db.collection.validate() inconsistencia, se devuelve una advertencia y el indicador de reparación en el índice se establece true en.

db.collection.validate() también valida cualquier documento que viole las reglas de validación del esquema de la colección.

Nota

El comando validate no admite vistas y genera un error cuando se ejecuta en una vista.

El método db.collection.validate() en mongosh proporciona un contenedor en torno a validate.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Importante

Este comando no es compatible con los clústeres M0 y Flex. Para obtener más información, consulta 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.

Modificado en la versión 5.0.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
validate: <string>, // Collection name
full: <boolean>, // Optional
repair: <boolean>, // Optional, added in MongoDB 5.0
metadata: <boolean> // Optional, added in MongoDB 5.0.4
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

validate

string

The name of the collection to validate.

booleano

Opcional. Un indicador que determina si el comando realiza una comprobación más lenta pero más exhaustiva o una comprobación más rápida pero menos exhaustiva.

  • Si true, realiza una comprobación más exhaustiva con la siguiente excepción:

    • La validación completa en el oplog para WiredTiger omite la verificación más exhaustiva. El validate.warnings incluye una notificación sobre el comportamiento.

  • Si false, omite algunas comprobaciones para una verificación más rápida, pero menos exhaustiva.

El valor es por defecto false.

Para el motor de almacenamiento WiredTiger, solo el proceso de validación full forzará un punto de control y limpiará todos los datos en memoria en el disco antes de verificar los datos en el disco.

booleano

opcional. Una bandera que determina si el comando realiza una reparación.

  • Si true, se realiza una reparación.

  • Si false, no se realiza ninguna reparación.

El valor es por defecto false.

Una reparación solo puede ejecutarse en un nodo autónomo.

La reparación corrige estos problemas:

  • Si se encuentran entradas de índice faltantes, se insertan las claves perdidas en el índice.

  • Si se encuentran entradas de índice adicionales, las claves adicionales se eliminan del índice.

  • Si se encuentran documentos de múltiples claves para un índice que no es un índice de múltiples claves, el índice se cambia a un índice de múltiples claves.

  • Si se encuentran documentos multiclave que no están especificados por las rutas multiclave de un índice, se actualizan las rutas multiclave del índice.

  • Si se encuentran documentos corruptos con datos BSON inválidos, se eliminan los documentos.

Para obtener más información, consulte la opción --repair para mongod

Nuevo en la versión 5.0.

booleano

Opcional. Una bandera que permite a los usuarios realizar una validación rápida para detectar opciones de índice no válidas sin escanear todos los documentos e índices.

  • Si true, se realiza un análisis de validación de metadatos.

  • Si false, no se realiza un escaneo de validación de metadatos.

El valor es por defecto false.

Ejecutar el comando de validación con { metadata: true } no está soportado con ninguna otra opción validate.

La opción de validación metadata:

  • Le ofrece una forma más rápida de identificar los índices no válidos mediante el escaneo solo de los metadatos de las colecciones.

  • Proporciona una alternativa a la eliminación y recreación de múltiples índices no válidos cuando se utiliza con el comando collMod.

La opción de validación metadata solo escanea los metadatos de la colección para encontrar índices no válidos más rápidamente.

Si se detecta un índice no válido, el comando de validación te pedirá que uses el comando collMod para remover los índices no válidos.

db.runCommand( { collMod: <collectionName> } )

Novedades en la versión 5.0.4.

El comando validate puede ser lento, especialmente en conjuntos de datos grandes.

El comando obtiene un bloqueo validate exclusivo W en la colección. Esto bloqueará todas las lecturas y escrituras en la colección hasta que la operación finalice. Al ejecutarse en un secundario, la operación puede bloquear todas las demás operaciones en ese secundario hasta que validate finalice.

Advertencia

Debido al impacto en el rendimiento de la validación, considere ejecutar validate solo en nodos secundarios del conjunto de réplicas. Puede usar rs.stepDown() para indicar al nodo principal actual que se convierta en secundario y así evitar afectar a un nodo principal activo.

Los $currentOp currentOp comandos y dataThroughputAverage incluyen información y para operaciones de validación en curso.dataThroughputLastSecond

Los mensajes de registro para las operaciones de validación incluyen información dataThroughputAverage y dataThroughputLastSecond.

El comando validate ya no admite afterClusterTime. Como tal, validate no se puede asociar con sesiones causalmente coherentes.

A partir de MongoDB 6.0, el comando validate devuelve un mensaje si un índice único tiene un formato de clave incompatible. El mensaje indica que se está utilizando un formato antiguo.

  • Para validar una colección myCollection usando la configuración de validación por defecto (específicamente, completo: falso):

    db.runCommand( { validate: "myCollection" } )
  • Para realizar una validación completa de la colección,myCollection especifique full: true:

    db.runCommand( { validate: "myCollection", full: true } )
  • Para reparar la colección myCollection, especifica reparar: true:

    db.runCommand( { validate: "myCollection", repair: true } )
  • Para validar los metadatos en la colección myCollection, especifique metadata: true:

    db.runCommand( { validate: "myCollection", metadata: true } )

Nota

La salida puede variar dependiendo de la versión y configuración específica de tu instancia de MongoDB.

Especifique completo: verdadero para obtener una salida más detallada.

validate.nInvalidDocuments

Número de documentos inválidos en la colección. Los documentos inválidos son aquellos que no se pueden leer, lo que significa que el documento BSON está dañado y presenta un error o un tamaño incompatible.

validate.nNonCompliantDocuments

El número de documentos que no se ajustan al esquema de la colección. Los documentos no conformes no se cuentan como inválidos en nInvalidDocuments.

validate.nrecords

El número de documentos en la colección.

validate.nIndexes

El número de índices de la colección que se validaron.

validate.keysPerIndex

Un documento que contiene el nombre y el recuento de entradas de índice para cada índice en la colección.

"keysPerIndex" : {
"_id_" : <num>,
"<index2_name>" : <num>,
...
}

keysPerIndex identifica el índice solo por su nombre.

validate.indexDetails

Un documento que contiene el estado de la validación del índice para cada índice.

"indexDetails" : {
"_id_" : {
"valid" : <boolean>
},
"<index2_name>" : {
"valid" : <boolean>
},
...
}
  • indexDetails identifica el índice específico (o índices) que es inválido. Las versiones anteriores de MongoDB marcarían todos los índices como inválidos, si alguno de los índices estuviera inválido.

  • indexDetails identifica el índice solo por su nombre. Las versiones anteriores de MongoDB mostraban el namespace completo del índice; es decir, <db>.<collection>.$<index_name>.

validate.ns

El nombre completo del espacio de nombres de la colección. Los espacios de nombres incluyen el nombre de la base de datos y el nombre de la colección en el formato database.collection.

validate.valid

Un valor booleano que es true si determina que todos los aspectos de la colección son válidos.validate Si false es, consulte el campo para obtener más errors información.

validate.repaired

Un valor booleano que es true si reparó la validate colección.

validate.warnings

Un arreglo que contiene mensajes de advertencia, si los hay, respecto a la propia operación de validación. Los mensajes de advertencia no indican que la colección sea en sí misma inválida. Por ejemplo:

"warnings" : [
"Could not complete validation of table:collection-28-6471619540207520785. This is a transient issue as the collection was actively in use by other operations."
],
validate.errors

Si la colección no es válida (es decir, valid es falso), este campo contendrá un mensaje que describe el error de validación.

validate.extraIndexEntries

Un arreglo que contiene información para cada entrada de índice que apunta a un documento que no existe en la colección.

"extraIndexEntries" : [
{
"indexName" : <string>,
"recordId" : <NumberLong>, // for the non-existent document
"indexKey" : {
"<key1>" : <value>,
...
}
}
...
]

Nota

Para el arreglo extraIndexEntries, la suma de todos los tamaños de campo indexKey tiene un límite de 1MB, donde los tamaños incluyen tanto las claves como los valores para el indexKey. Si la suma supera este tamaño, el campo de advertencia mostrará un mensaje.

validate.missingIndexEntries

Un arreglo que contiene información para cada documento que carece de la entrada de índice correspondiente.

"missingIndexEntries" : [
{
"indexName" : <string>,
"recordId" : <NumberLong>,
"idKey" : <_id key value>, // The _id value of the document. Only present if an ``_id`` index exists.
"indexKey" : { // The missing index entry
"<key1>" : <value>,
...
}
}
...
]

Nota

Para el arreglo missingIndexEntries, la suma del tamaño del campo idKey y todos sus tamaños de campo indexKey tiene un límite de 1MB, donde los tamaños de los campos incluyen tanto las claves como los valores para idKey y indexKey. Si la suma supera este tamaño, el campo de advertencia muestra un mensaje.

validate.corruptRecords

Un arreglo de valores RecordId para documentos que no se pueden leer, posiblemente porque los datos están dañados. Estos documentos se informan como corruptos durante la validación. Un RecordId es una clave interna de 64 bits entera que identifica de manera única un documento en una colección.

"corruptRecords" : [
Long(1), // RecordId 1
Long(2) // RecordId 2
]

Nuevo en la versión 5.0.

validate.ok

Un número entero con el valor 1 cuando el comando se ejecuta correctamente. Si el comando falla, el campo ok tiene un valor de 0.

Volver

top

En esta página