MongoDB con controladores
Esta página documenta a mongosh . Para ver el método equivalente en un driver de MongoDB, se debe consultar la página correspondiente al lenguaje de programación:
Descripción
Cambiado en la versión 6.2.
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 entrue.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 comandovalidate.
Compatibilidad
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.
Sintaxis
El método db.collection.validate() tiene la siguiente sintaxis:
db.collection.validate( { full: <boolean>, // Optional repair: <boolean>, // Optional, added in MongoDB 5.0 checkBSONConformance: <boolean> // Optional, added in MongoDB 6.2 } )
Parámetros
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.
El valor es por defecto Para el motor de almacenamiento WiredTiger, solo el proceso de validación | |
booleano | opcional. Una bandera que determina si el comando realiza una reparación.
El valor es por defecto Una reparación solo puede ejecutarse en un nodo autónomo. La reparación soluciona los siguientes problemas:
IMPORTANTE: Para establecer Para obtener más información, consulte la opción Nuevo en la versión 5.0. | |
| booleano | opcional. Si
El valor es por defecto Nuevo en la versión 8.1. |
booleano | opcional. Si
Nuevo en la versión 6.2. |
Comportamiento
Rendimiento
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:
Aísla a un set de réplicas siguiendo el procedimiento de mantenimiento continuo para removerlo temporalmente del clúster.
Convierta un nodo secundario en un miembro oculto del conjunto de réplicas y realice la validación en el nodo oculto.
Métricas de rendimiento de datos
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.
Mejoras en la validación de colecciones
A partir de MongoDB 6.2, el comando validate y el método db.collection.validate():
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
checkBSONConformanceque habilite comprobaciones completas de BSON.
Ejemplos
Para validar una colección
myCollectionusando 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,
myCollectionespecifique full: true:db.myCollection.validate( { full: true } ) Para reparar la colección
myCollection, especifica reparar: true:db.myCollection.validate( { repair: true } ) Para realizar comprobaciones de conformidad BSON adicionales
myCollectionen, especifique checkBSONConformance: true:db.myCollection.validate( { checkBSONConformance: true } )
Para detalles de la salida, consulta Validar salida.