Docs Menu
Docs Home
/ /

validar (comando de base de datos)

Cambiado en la versión 6.2.

validate

El validate El comando verifica la exactitud de los datos e índices de una colección y devuelve los resultados. El comando también corrige cualquier inconsistencia en el recuento y el tamaño de los datos de una colección.

Tip

mongoshEn, este comando también se puede ejecutar a través del validate() método auxiliar.

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 5.0 versión, el comando también puede encontrar inconsistencias en la colección y solucionarlas si es validate 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 3.4 de).

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 db.collection.validate() método en proporciona una envoltura mongosh alrededor validate de.

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.

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
checkBSONConformance: <boolean> // Optional, added in MongoDB 6.2
background: <boolean> // Optional
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

validate

string

El nombre de la colección a validar.

full

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 verificación más exhaustiva con la siguiente excepción:

    • La validación completa del oplog para WiredTiger omite la comprobación más exhaustiva. El incluye un aviso del validate.warnings comportamiento.

  • Si es false, se omiten algunas comprobaciones para realizar 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.

repair

booleano

Opcional. Un indicador que determina si el comando realiza una reparación.

  • Si es true, se realiza una reparación.

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

El valor es por defecto false.

Una reparación sólo se puede ejecutar en un nodo independiente.

La reparación corrige los siguientes 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 corruptos con datos BSON no válidos, los documentos se eliminan.

IMPORTANTE: Para establecer repair trueen, debe establecer la fixMultikey opción true en.

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

Nuevo en la versión 5.0.

metadata

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 es true, se realiza un escaneo de validación de metadatos.

  • Si es false, no se realiza ningún 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 collMod comando.

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 le solicitará que utilice el comando para eliminar los índices no collMod válidos.

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

Nuevo en la versión 5.0.4.

checkBSONConformance

booleano

Opcional. Si true es, se comprueba la colección para garantizar que los documentos BSON cumplan con las especificaciones de BSON. Las comprobaciones aumentan el tiempo necesario para completar la validación. Cualquier error se devuelve como advertencia.

checkBSONConformance:

  • El valor por defecto es false.

  • Se habilita cuando full se establece en true.

  • No se puede utilizar con:

    • repair establecido en true.

    • metadata establecido en true.

Nuevo en la versión 6.2.

fixMultikey

booleano

Opcional. trueSi, MongoDB soluciona los siguientes problemas:

  • Si el validate comando encuentra documentos multiclave para un índice que no es multiclave, MongoDB cambia el índice a un índice multiclave.

  • Si el validate comando encuentra documentos multiclave que no están especificados por las rutas multiclave de un índice, MongoDB actualiza las rutas multiclave del índice.

El valor es por defecto false.

Nuevo en la versión 8.1.

El comando puede ser lento, especialmente en conjuntos de datos validate 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.

A partir de MongoDB,6.2 el validate comando y db.collection.validate() el método:

  • Revise las colecciones para asegurarse de que los documentos BSON cumplan con las especificaciones de BSON.

  • Revisa las colecciones de series de tiempo para detectar inconsistencias internas en los datos.

  • Ten una nueva opción checkBSONConformance que habilite comprobaciones completas de BSON.

El comando validate ya no admite afterClusterTime. Por lo tanto, no se puede asociarvalidate con sesiones causalmente consistentes.

Las colecciones de series temporales se introdujeron en MongoDB 5.0. A partir de la versión5.2, el formato interno predeterminado para almacenar mediciones de series temporales cambió. Debido a este cambio:

  • Las colecciones de series temporales creadas antes de la versión v5.2 podrían contener documentos tanto en el formato antiguo como en el nuevo. Internamente, estas colecciones se marcan como timeseriesBucketsMayHaveMixedSchemaData: true.

  • Las colecciones de series temporales creadas en la versión v5.2 o posterior siempre contendrán documentos en el nuevo formato. Internamente, estas colecciones se marcan como timeseriesBucketsMayHaveMixedSchemaData: false o no se marcan.

Cuando el indicador es true, las consultas de series temporales consideran tanto el formato nuevo como el antiguo. Cuando el indicador es false o no está presente, las consultas de series temporales solo consideran el nuevo formato.

Debido a un error descrito en SERVER-91194En ciertas circunstancias, la marca podría perderse. Cuando esto sucede en colecciones de series temporales creadas antes de v5.2, los resultados de la consulta de lectura pueden estar incompletos. Es decir, es posible que se pierdan algunos documentos, aunque aún estén almacenados en el disco.

Para determinar si esto le afecta, ejecute validate en su colección de series temporales. El comando devuelve un error si la colección se ve afectada por el error. En este caso, los resultados de su consulta de lectura podrían ser incorrectos.

Si se ve afectado, actualice a una versión corregida y configure timeseriesBucketsMayHaveMixedSchemaData en true para cada colección afectada para garantizar que las futuras consultas a la colección devuelvan resultados correctos. Los pasos completos de este proceso se encuentran aquí.

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

El comando actualiza las estadísticas de recuento y validate collStats tamaño de datos de la colección en la salida con sus valores correctos.

Nota

En el caso de un apagado incorrecto, las estadísticas de recuento y tamaño de los datos podrían ser inexactas.

  • Para validar una colección myCollection utilizando la configuración de validación predeterminada (específicamente, full: false):

    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 myCollection reparar la colección, especifique repair: true:

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

    db.runCommand( { validate: "myCollection", metadata: true } )
  • Para realizar comprobaciones de conformidad BSON adicionales myCollection en, especifique checkBSONConformance: true:

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

Nota

La salida puede variar según la versión y la configuración específica de su instancia de MongoDB.

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

validate.uuid

El identificador único universal (UUID) de la colección.

Nuevo en la versión 6.2.

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

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

A partir de MongoDB,6.2 nNonCompliantDocuments también incluye la cantidad de documentos que no cumplen con los requisitos de recopilación de series de tiempo o BSON.

validate.nrecords

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

validate.nIndexes

El número de índices de la colección que fueron validados.

validate.keysPerIndex

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

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

keysPerIndex identifica el índice solo por su nombre.

validate.indexDetails

Cambiado en la versión 8.1.

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

"indexDetails" : {
"_id_" : {
"valid" : <boolean>,
"spec" : <document>
},
"<index2_name>" : {
"valid" : <boolean>,
"spec" : <document>
},
...
}
  • indexDetails Identifica el índice (o índices) específico(s) que no es válido. Las versiones anteriores de MongoDB marcaban todos los índices como no válidos si alguno lo era.

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

  • El documento spec es la especificación del índice, que varía según cómo se defina. Algunos ejemplos de campos del documento spec incluyen:

    • spec.v. La versión índice.

    • spec.uniqueUn valor booleano que indica si el índice es único.

    • spec.key. El identificador de la clave del índice.

    • spec.name. El nombre del índice.

    Nuevo en la versión 8.1.

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.repairMode

Nuevo en la versión 8.2.

String que indica qué tipos de inconsistencias de datos intentó reparar el comando validate, si se detectan. Los valores posibles para repairMode incluyen:

  • None:No se toman acciones de reparación.

  • FixErrors: Intenta reparar cualquier error de validación.

  • AdjustMultikey:Intenta corregir inconsistencias de claves múltiples ajustando los metadatos de claves múltiples.

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

Una matriz 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 la matriz, la suma de los tamaños de extraIndexEntries los indexKey campos tiene un límite de 1MB, donde los tamaños incluyen tanto las claves como los valores indexKey de. Si la suma supera este tamaño, el campo de advertencia muestra un mensaje.

validate.missingIndexEntries

Una matriz que contiene información para cada documento al que le falta 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

Una matriz de valores RecordId para documentos ilegibles, posiblemente porque los datos están dañados. Estos documentos se reportan como corruptos durante la validación. Un RecordId es una clave interna entera de 64bits que identifica de forma ú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 entero con el valor 1 cuando el comando se ejecuta correctamente. Si el comando falla, el campo tiene ok el 0 valor.

Volver

top

En esta página