Validación de Datos en MongoDB: Mantén la Integridad de la Información

Clase 7 de 22Curso de Modelado de Datos en MongoDB

Resumen

¿Cómo mantener la integridad de los datos en MongoDB?

MongoDB es conocido por su flexibilidad, lo que permite una gestión de datos ágil y adaptable. Sin embargo, esta flexibilidad no significa que debamos perder la integridad de los datos. En este módulo aprenderás a crear esquemas de validación que aseguren el cumplimiento de las reglas de negocio y la estructura necesaria para tus documentos en MongoDB. Esto es indispensable para mantener un buen modelado de datos y seguir las mejores prácticas.

¿Cómo empezar la validación de datos en MongoDB?

Para mantener la integridad de la información en documentos de MongoDB, podemos seguir una serie de pasos:

  1. Crear una base de datos y colección:

    • Al utilizar una base de datos como PlatziStore, se puede crear de manera dinámica simplemente ejecutando queries.
  2. Insertar documentos:

    • Se realiza de manera sencilla y se beneficia de la dinámica de MongoDB, donde no es necesario crear la colección explícitamente antes de insertar, ya que se crea automáticamente.
  3. Problemas comunes con la flexibilidad de MongoDB:

    • MongoDB permite insertar documentos con información incompleta o incorrecta, como un email numérico, lo que puede afectar la integridad de los datos.

¿Cómo definir un esquema para validar documentos?

La creación de un esquema permite establecer reglas para tus documentos en MongoDB:

  1. Uso de JSON Schema:

    • Se define un esquema usando el operador JSONSchema. Esto permite indicar el tipo de datos que cada propiedad de un documento debe tener.
  2. Definición de propiedades:

    • Utilizamos bsonType para especificar tipos de datos que soportan un mayor número de tipos que JSON corriente.
    • Por ejemplo, el email y el nombre deben ser de tipo string.
  3. Asegurar requerimientos de datos:

    • Es posible emplear required para designar cuáles campos son obligatorios en cada documento.
    • Campos como email y password pueden ser requeridos, mientras que otros, como last name, son opcionales.
db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "password"],
      properties: {
        name: {
          bsonType: "string",
          description: "must be a string and is not required"
        },
        last_name: {
          bsonType: "string",
          description: "must be a string and is not required"
        },
        email: {
          bsonType: "string",
          description: "must be a string and is required"
        },
        password: {
          bsonType: "string",
          description: "must be a string and is required"
        }
      }
    }
  }
})

¿Qué hacer si la colección ya fue creada?

Cuando una colección ha sido creada dinámicamente y se desea actualizar su esquema de validación, se debe eliminar y volver a crear:

  1. Borrar la colección:

    • Usar el comando db.collection.drop() permite eliminar el esquema anterior para definir uno nuevo.
  2. Recrear con el nuevo esquema:

    • Tras borrar, se puede ejecutar el script de creación para aplicar el nuevo esquema de validación desde cero.

¿Qué tipo de datos podemos validar?

MongoDB, a través del formato bson, permite validar una amplia variedad de tipos de datos:

  • String
  • Number (double, int, long, decimal)
  • Boolean
  • Date
  • Array
  • Objetos anidados
  • Expresiones regulares

Estos tipos proporcionan flexibilidad al crear reglas de negocio más completas y adaptadas a las necesidades de tu aplicación. A medida que progreses, considerarás utilizar expresiones regulares para validaciones más específicas, como asegurar la complejidad de contraseñas.

Este conocimiento te brindará las herramientas para asegurarte de que, a pesar de la naturaleza flexible de MongoDB, tus datos siempre estarán bien estructurados y cumplirán con las expectativas de integridad y consistencia. Continúa explorando y profundizando tus habilidades en la gestión de datos, ¡cada paso te acerca a la maestría en bases de datos!