Validación de Datos en MongoDB: JSON Schema y Actualizaciones
Clase 11 de 22 • Curso de Modelado de Datos en MongoDB
Contenido del curso
- 7

Validación de Datos en MongoDB: Mantén la Integridad de la Información
16:08 - 8

Validaciones de Datos: Numbers, Booleanos y Enums en JSON Schema
07:49 - 9

Validación de Arrays y Subdocumentos en Bases de Datos NoSQL
11:54 - 10

Validación de Passwords con Expresiones Regulares en MongoDB
08:57 - 11

Validación de Datos en MongoDB: JSON Schema y Actualizaciones
12:04
- 12

Relaciones en Bases de Datos NoSQL: Embebidas y Referenciales
10:29 - 13

Relaciones 1 a 1 embebidas en bases de datos: cuándo y cómo usarlas
10:09 - 14

Relaciones Uno a Uno Referenciadas en Bases de Datos Documentales
09:52 - 15

Relaciones Uno a Muchos: Embebidas y Referenciadas en Bases de Datos
10:46 - 16

Relaciones Uno a Muchos con Referencias en Bases de Datos
15:19 - 17

Relaciones Muchos a Muchos en Bases de Datos: Tiendas y Productos
14:31 - 18

Relaciones Muchos a Muchos en Bases de Datos Documentales
07:04
¿Cómo restringir propiedades y mantener la flexibilidad en MongoDB?
MongoDB es conocido por su dinámica flexibilidad al manejar documentos, ofreciéndonos una base de datos NoSQL que se ajusta a nuestras necesidades. Pero, ¿qué sucede cuando queremos imponer ciertas restricciones a la estructura de nuestros documentos? Hoy exploraremos cómo hacerlo sin perder del todo esa flexibilidad tan preciada.
Restricción de propiedades opcionales y obligatorias
Un JSON Schema nos permite definir cuáles elementos de un documento son obligatorios y cuáles son opcionales. Algunos campos típicos que son requeridos en una base de datos de usuario son:
emailpasswordrole
Aparte, podemos definir campos opcionales, como:
edadestado civilnombreapellido
Sin embargo, algo que caracteriza a MongoDB es su flexibilidad para incluir campos nuevos que no estaban previamente definidos. Ejemplo: el campo social accounts, que podría tener redes sociales como Twitter y Facebook. Mongo permite realizar estas inserciones sin problemas, preservando su naturaleza flexible.
Cómo restringir propiedades adicionales
Para limitar esta flexibilidad, podemos ajustar el JSON Schema para que no acepte propiedades adicionales. Esto se hace configurando additionalProperties a false. De esta manera, se obliga a que todos los documentos ingresados sigan una única estructura, con los campos estrictamente definidos.
{
"properties": {
"email": { "type": "string" },
"password": { "type": "string" },
"role": { "type": "string" },
"additionalProperties": false
}
}
Al insertar un documento que contenga un atributo no permitido, MongoDB rechazará la inserción, manteniendo un control estricto sobre la estructura de datos almacenada.
¿Por qué mantener las propiedades flexibles?
Aunque restringir las propiedades adicionales aumenta el control de estructura, sacrificarás parte de la flexibilidad que MongoDB ofrece. En entornos dinámicos, esta flexibilidad permite la adaptación a cambios rápidos sin necesidad de procesos complicados de migración, comúnmente necesarios en bases de datos relacionales. Por ello, considera mantener additionalProperties en true a menos que tu caso de negocio requiera lo contrario.
Actualización de un JSON Schema sin borrar documentos
Modificar un JSON Schema en una base de datos ya establecida es vital sin impactar los datos existentes. MongoDB nos permite ejecutar un comando que facilita esta tarea: runCommand. Este comando nos permite actualizar la definición de validación de una colección sin eliminarla.
Para utilizarlo correctamente, debes enviar toda la estructura del validador, incluyendo el cambio que deseas realizar. Recuerda que el usuario que lo ejecute debe tener los permisos adecuados. Aquí te mostramos un ejemplo:
{
"runCommand": {
"collMod": "users",
"validator": {
"$jsonSchema": {
"properties": {
"email": { "type": "string" },
"password": { "type": "string" },
"role": { "type": "string" }
},
"additionalProperties": true
}
}
}
}
Gestión de permisos
A veces puedes encontrarte con errores de acceso al intentar actualizar el JSON Schema. Asegúrate de que tu usuario tenga roles apropiados como Atlas Admin para ejecutar estos comandos sin problemas.
Ejecución selectiva en Visual Studio Code
Un consejo adicional es cómo manejar la ejecución de scripts en VSCode. Si seleccionas una parte específica de tu código, solo esa porción se ejecutará. Esto es útil para pruebas y depuraciones, asegurándote de que el puntero esté donde deseas ejecutar.
Estos conocimientos sobre la validación y administración de datos te ayudarán a mantener integridad y precisión en tus bases de datos MongoDB. ¡Sigue explorando y aprendiendo para aprovechar al máximo esta potente herramienta!