No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Relaciones 1 a muchos embebidas

15/22
Recursos

Aportes 5

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Embeber REVIEWS o COMENTARIOS de cierto producto es un ejemplo de d贸nde NO usar este m茅todo, porque puede crecer demasiado y reducir el rendimiento de la consulta o exceder los 16 mb de limite.

Apuntes

Relaciones 1 a Muchos embebidas

La relacion embebida 1 a muchos embebida es tener una lista (arreglo) de sub-documentos de una coleccion. El documento puede tener varios sub-documentos de una coleccion y esos sub-documentos dependen del documento padre y solo tienen ese.

Casos de uso

  • Cuando la informacion es consultada en conjunto
  • El arreglo de subdocumentos no peligre el limite de 16MB
  • Cuando los sub-documentos son una dependencia
  • Cuando los dub-docs son 1:few (1 a pocos)

Ejemplo

En la siguiente imagen se puede ver la coleccion de ordenes que tienen una relacion embebida 1-N de productos. La representacion ER es agregar al final del nombre de la coleccion del sub-documento corchetes (Product []).

<h5>Insertar</h5>
db.orders.insertOne({
    user_id: ObjectId('64966222a80142b1ef0dbb5a'), // referencia a un ObjectID de un usuario
    date: "2020-12-12",
    items: [
        {
            name: 'Camiseta',
            price: 12000,
            qty: 1
        },
        {
            name: 'Pantalon',
            price: 16000,
            qty: 2
        },
    ]
})
<h5>Consultar</h5>
// buscar el id de un usuario
db.users.find()

// ver las ordenes de compra
db.orders.find()

// Buscar algo en concreto de las ordenes
db.orders.find({
  "items.qty": 2
})

Hubiera sido super bueno que estas clases tuvieran los conceptos por separado鈥 es decir, la parte de relaciones trabajar ya con bases de datos que supuestamente 铆bamos a usar en weather, y no trabajar sobre crear datos y luego forzar a hacer match con consultas

Un aporte por si no les funciona 鈥渋tems.qty鈥, en la docoumentaci贸n de mongodb https://www.mongodb.com/docs/manual/reference/method/db.collection.find/ , encontramos la propiedad 鈥渟ize鈥 que nos ayuda a filrar arreglos seg煤n su tama帽o, para este ejemplo ser铆a algo como:

filtrar ordenes con 2 items鈥

 db.orders.find( {items: {$size: 2}} )

Yo lo entiendo como que las relaciones 1-N embebidas son relaciones estaticas, por lo mismo de que son caracteriscas propias del elemento principal, mientras que las relaciones 1-N referenciadas son relaciones dinamicas, cambian en el tiempo, como los reviews o comentarios, que pueden aumentar considerablemente.