Contenido del curso
Proyecto
Validación de datos
Relaciones
- 12

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

Relaciones uno a uno embebidas en MongoDB
10:09 min - 14

Relaciones uno a uno con $lookup en MongoDB
09:52 min - 15

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

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

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

Relaciones Muchos a Muchos en Bases de Datos Documentales
07:04 min
Bonus: patrones
Próximos pasos
Validación de strings con JSON Schema en MongoDB
Resumen
MongoDB es flexible, pero esa flexibilidad no significa caos. Cuando aprendes a validar datos con JSON Schema en MongoDB, proteges la integridad de tus colecciones y aseguras que cada documento cumpla las reglas de negocio que tu aplicación necesita.
Esta guía te muestra cómo definir esquemas explícitos en una base de datos NoSQL documental, empezando por los strings, para que tus colecciones mantengan estructura sin perder la versatilidad que distingue a Mongo.
¿Por qué validar datos si MongoDB es una base NoSQL flexible?
La flexibilidad de las bases documentales permite que cada documento tenga atributos distintos, pero no protege la integridad de la información. Si insertas un usuario con un email numérico o sin password, Mongo lo aceptará por defecto.
Desde la terminal de VS Code conectada a MongoDB Atlas [01:45], al ejecutar db.users.insertOne() con un email en formato entero y sin nombre ni password, el documento se inserta sin error. Eso es justo lo que queremos evitar.
¿Qué es un BSON Type en MongoDB? Es el sistema de tipos que usa Mongo internamente y que soporta más formatos que JSON estándar, como double, date, array, bool o expresiones regulares.
¿Cómo se crea una colección con validador en MongoDB?
El método db.createCollection() recibe un objeto con la propiedad validator, donde defines un $jsonSchema que describe la estructura esperada [05:30].
El esquema base se construye así:
bsonType: "object"declara que cada documento es un objeto.propertieslista cada atributo del documento.- Dentro de cada propiedad, defines su
bsonTypeesperado, por ejemplostring.
Un detalle importante: si la colección ya existe porque se creó dinámicamente con un insertOne previo, debes ejecutar un drop antes de aplicar el nuevo esquema. Por eso conviene tener un archivo drop.mongodb separado para borrar la colección y reiniciar las validaciones [07:50].
¿Cómo defino propiedades obligatorias y opcionales con required?
El arreglo required dentro del esquema indica qué campos no pueden faltar. El resto sigue siendo opcional, respetando la naturaleza flexible de Mongo.
En el ejemplo de la colección users, los campos email y password son obligatorios, mientras que name y lastName quedan opcionales [10:20]. La regla queda así:
- Si envías
emailopassword, deben existir y ser string. - Si envías
nameolastName, también deben ser string, aunque puedes omitirlos. - Cualquier intento de insertar un documento sin
passworddispara un error de validación.
Esta combinación de required con bsonType te da control sin sacrificar dinamismo. Puedes seguir agregando atributos extra a documentos individuales y la colección los aceptará, siempre que se cumpla el mínimo definido.
¿Qué pasa si inserto un email numérico con un esquema activo? MongoDB rechaza el documento y lanza un error de document validation, evitando que datos inválidos lleguen a la colección.
¿Qué tipos de datos puedo validar con JSON Schema?
Gracias a BSON Type, el validador acepta una variedad amplia de tipos para reflejar reglas reales de negocio:
stringpara cadenas de texto como nombres o correos.doubleointpara valores numéricos.boolpara banderas verdadero/falso.datepara marcas de tiempo.arrayyobjectpara estructuras anidadas.regexpara validar formato, por ejemplo longitud mínima y caracteres del password.
Las validaciones más finas, como verificar que un correo tenga formato usuario@dominio.com con caracteres específicos, suelen quedar en la capa de aplicación con JavaScript, Python u otro lenguaje. Mongo se enfoca en el tipo y la presencia del campo; tu API se encarga de las reglas de negocio detalladas.
¿Cómo se ve el flujo completo de validación en VS Code?
El flujo práctico para mantener la integridad sigue una secuencia clara dentro del MongoDB Playground [02:10]:
- Conectas a la base con
use("platzi_store"). - Defines un archivo
collection.mongodbcondb.createCollection("users", { validator: { $jsonSchema: {...} } }). - Si la colección ya existía, ejecutas
db.users.drop()desde un archivo separado. - Insertas documentos de prueba con
db.users.insertOne({...})y observas qué acepta o rechaza el validador. - Consultas con
db.users.find()para confirmar que solo entran documentos válidos.
Con este patrón conviertes una colección flexible en una colección confiable. Tus usuarios siempre tendrán email y password, los tipos serán consistentes y tu aplicación podrá confiar en la forma de los datos al leerlos.
¿Has aplicado validaciones con JSON Schema en tus propios proyectos? Cuéntame en los comentarios qué reglas de negocio te ha tocado modelar y cómo resolviste la tensión entre flexibilidad e integridad.