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 versión 5.0, el método db.collection.validate() también puede corregir inconsistencias en la colección.

Las inconsistencias del índice incluyen:

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

  • Un índice tiene multikeyPaths 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 infrinja las reglas de validación de esquemasde 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. Una bandera 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 full el proceso de validación forzará un punto de control y volcará todos los datos "in-memory" en el disco antes de verificar los datos en 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 soluciona estos problemas:

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

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

  • Si se encuentran documentos multikey para un índice que no es un índice multikey, se cambia el índice a un índice multikey.

  • Si se encuentran documentos multiclave que no estén especificados por los caminos multiclave de un índice multiclave, se actualizan los caminos multiclave del índice multiclave.

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

Para obtener más información, consulta 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 operación de validación en las aplicaciones del cliente, ejecute db.collection.validate() en un nodo secundario que no esté atendiendo solicitudes de lectura. Puede convertir el nodo primario actual en un nodo secundario ejecutando el método rs.stepDown().

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

El $currentOp y el currentOp comando incluyen información dataThroughputAverage e dataThroughputLastSecond para validar operaciones en curso.

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, especifica 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