No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
3 Hrs
57 Min
29 Seg

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?

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
})

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.

Un aporte por si no les funciona “items.qty”, en la docoumentación de mongodb https://www.mongodb.com/docs/manual/reference/method/db.collection.find/ , encontramos la propiedad “size” 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}} )

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

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.