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
/ /
Colecciones

db.colección.validate() (método mongosh)

MongoDB con controladores

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.validate(<documents>)

Valida una colección. El método escanea una colección de datos y los índices para verificar su corrección y retorna el resultado. Para obtener información sobre la salida, consulta Validar salida.

A partir de la 5.0 versión, el método también puede corregir inconsistencias en la db.collection.validate() colección.

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 se detectan inconsistencias por el comando db.collection.validate(), se devuelve una advertencia y la bandera de reparación en el índice se establece en true.

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

El método db.collection.validate() es un contenedor alrededor del comando validate.

Este método 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.

El método db.collection.validate() tiene la siguiente sintaxis:

db.collection.validate( {
full: <boolean>, // Optional
repair: <boolean> // Optional, added in MongoDB 5.0
} )

El método db.collection.validate() puede recibir el siguiente parámetro de documento opcional con los campos:

Campo
Tipo
Descripción

booleano

Opcional. Un indicador que determina si el comando realiza una verificación más lenta pero más exhaustiva o una verificació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 oplog para WiredTiger omite la verificación más exhaustiva.

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

El método db.collection.validate() puede consumir muchos recursos y afectar el rendimiento de tu instancia de MongoDB, especialmente con conjuntos de datos grandes.

El método db.collection.validate() obtiene un bloqueo exclusivo en la colección. Esto bloqueará todas las lecturas y guardados en la colección hasta que se complete la operación. Cuando se ejecuta en un secundario, la operación puede bloquear todas las demás operaciones en ese secundario hasta que termine.

Advertencia

La validación tiene requisitos de bloqueo exclusivos que afectan el rendimiento en los primarios y en los secundarios que están atendiendo lecturas. Considera ejecutar db.collection.validate() solamente en nodos que no estén procesando operaciones de lectura o escritura.

Para minimizar el impacto en el primario, la mayoría de los nodos con datos (que no sean árbitros) y con derecho a voto en el clúster deben estar disponibles y no deben tener un retraso significativo en la replicación.

Para minimizar el impacto de la validación en las aplicaciones cliente, ejecute en un nodo secundario que no esté atendiendo solicitudes de lectura.db.collection.validate() rs.stepDown() Puede convertir el nodo principal actual en un nodo secundario ejecutando el método.

Para aislar completamente la operación db.collection.validate() del tráfico del cliente, elige una de las siguientes opciones:

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.

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

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

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

    db.myCollection.validate( { repair: true } )

Para detalles de la salida, consulta Validar salida.

Volver

db.collection.updateOne

En esta página