Los modelos de datos eficaces satisfacen las necesidades de su aplicación. La consideración clave para la estructura de sus documentos es la decisión de incrustar o usar referencias.
Modelos de datos incrustados
Con MongoDB, puede incrustar datos relacionados en una sola estructura o documento. Estos esquemas se conocen generalmente como modelos "desnormalizados" y aprovechan los documentos enriquecidos de MongoDB. Considere el siguiente diagrama:
Los modelos de datos embebidos permiten a las aplicaciones almacenar piezas relacionadas de información en el mismo registro de la base de datos. Como resultado, es posible que las aplicaciones deban emitir menos queries y actualizaciones para completar operaciones comunes.
En general, utilice modelos de datos integrados cuando:
Tienes relaciones de "contenido" entre entidades. Ver Modelar relaciones uno a uno con documentos integrados.
Existen relaciones uno a muchos entre entidades. En estas relaciones, los documentos "varios" o secundarios siempre aparecen con o se visualizan en el contexto de los documentos "uno" o principales.Consulte Modelar relaciones uno a muchos con documentos incrustados.
En general, la incrustación proporciona un mejor rendimiento en las operaciones de lectura, así como la capacidad de solicitar y recuperar datos relacionados en una sola operación de base de datos. Los modelos de datos incrustados permiten actualizar datos relacionados en una sola operación de escritura atómica.
Para acceder a los datos dentro de los documentos incrustados, utiliza la notación de punto para "entrar" en los documentos incrustados. Consulta query de datos en arreglos y query de datos en documentos incrustados para obtener más ejemplos sobre el acceso a datos en arreglos y documentos incrustados.
Modelo de datos integrado y límite de tamaño del documento
Los documentos en MongoDB deben ser más pequeños que el tamaño máximo del documento BSON.
Para datos binarios masivos, considere GridFS.
Modelos de datos normalizados
Los modelos de datos normalizados describen relaciones utilizando referencias entre documentos.
En general, utilice modelos de datos normalizados:
cuando la incrustación daría como resultado la duplicación de datos pero no proporcionaría suficientes ventajas en el rendimiento de lectura para compensar las implicaciones de la duplicación.
para representar relaciones de muchos a muchos más complejas.
para modelar grandes conjuntos de datos jerárquicos.
Para unir colecciones, MongoDB proporciona las etapas de agregación:
$lookup(Disponible a partir de MongoDB 3.2)$graphLookup(Disponible a partir de MongoDB 3.4)
MongoDB también proporciona referencias para unir datos entre colecciones.
Para un ejemplo de modelos de datos normalizados, vea Modelar relaciones de uno a muchos con referencias de documentos.
Para ejemplos de varios modelos de árbol, vea Modelar estructuras en forma de árbol.