MongoDB con controladores
Esta página documenta una 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 los datos de una colección, los indexa para comprobar su exactitud y devuelve el resultado. Para obtener más información sobre la salida, consulte 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 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 establecetrueen.db.collection.validate()también valida cualquier documento que viole las reglas de validación del esquema de la colección.El método es
db.collection.validate()validateun envoltorio alrededor del comando.
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 puede tomar el siguiente parámetro de documento opcional con los db.collection.validate() 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. Un indicador que determina si el comando realiza una reparación.
El valor es por defecto Una reparación sólo se puede ejecutar en un nodo independiente. La reparación corrige 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.
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 potencialmente consume muchos recursos y puede afectar el rendimiento de su instancia de MongoDB, particularmente en conjuntos de datos db.collection.validate() grandes.
El método establece un bloqueo exclusivo 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 db.collection.validate() finalice.
Advertencia
La validación tiene requisitos de bloqueo exclusivos que afectan el rendimiento de los nodos primarios y secundarios que realizan lecturas. Considere ejecutar únicamente db.collection.validate() en nodos que no realicen lecturas ni escrituras.
Para minimizar el impacto en la instancia primaria, la mayoría de los miembros con derecho a voto que contienen datos (no árbitros) en el clúster deben estar disponibles y no deben tener un retraso de replicación significativo.
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 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
checkBSONConformanceque habilite comprobaciones completas de BSON.
Ejemplos
Para validar una colección
myCollectionutilizando la configuración de validación predeterminada (específicamente, full: false):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
myCollectionreparar la colección, especifique repair: 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.