No tienes acceso a esta clase

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

Persistencia de datos con $out

11/21
Recursos

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Código visto en clase

db.orders.updateOne( // actualizamos la orden
    { // hacemos match con la orden que queremos actualizar
        _id: ObjectId('649cb8c89f973670e36e123f')   
    },
    {   // mostramos el cambio, agregando un nuevo elemento
        $push: { // agregar elemento
            items: { // quien se lo agrego
                name: 'Producto 1',
                qty: 2,
                price: 12,
                product_id: ObjectId('649923f457514437ac501dd4')  
            }
        },
        $inc: { // incrementador
            total: 12 * 2 // total = total + price * qty
        }
    }
)

//

[
    {$sort: {
        "address.market": 1,
        price: -1
    }},
    {
        $group: {
            _id: "$address.market",
            masCostosas: {
                $first: {
                    name: "$name",
                    price: "$price"
                }
            }
        }
    } ,
    {
        $out: "propiedadesMasCostosas"
    }
]


Dejo mi aporte al curso: ```js use('sample_airbnb') db.listingsAndReviews.aggregate([ { $sort: {"address.market": 1, price: -1 } }, { $group: { _id: "$address.market", masCostosas: { $first:{ nombre:"$name", precio:"$price" } } } }, // con esto guardamos esto como una colección { $out:"Propiedades_Mas_Costosas" } ] ) db.Propiedades_Mas_Costosas.find() ```
Comparto mi solución al reto: ![](https://static.platzi.com/media/user_upload/image-e84db88a-25ca-4512-a248-2e45e26f437e.jpg) Para generar los atributos Nombre de Propiedad, Tipo de propiedad, Imagen de Propiedad, Número de camas, los seleccioné de los atributos ya listos en la info general. Para general el atributo del precio real, decidí sumar los atributos price, security\_deposit, cleaning\_fee de la info general. Para general el atributo del precio con descuento, tomé el atributo del precio real y le resté el 30% (valor arbirtrario). Para el atributo de calificación, decidí tomar el atributo review\_scores.review\_scores\_rating y como está en una escala de 1-100, lo dividí entre 20, para que quedara en una escala de 1-5. Para el atributo número de reviews, tomé el valor del atributo number\_of\_reviews de la info general. Decidí agregarle el atributo de personas permitidas (no es solicitado pero me pareció interesante agregarlo en la tarjeta). Para los valores de Mínima y Máxima Estancia, decidí calcular la fecha del día actual y sumarle los valores de minimum\_nights y maximum\_nights. Para que el mes me quedará en formato de letras, tuve que hacer un array con los meses e indexarlo con el valor resultante del mes extraído de la fecha (esto porque tengo una versión de mongo inferior a la 7.0.0, si ya se cuenta con esta versión o una superior, solo será necesario agregarle el operador correspondiente al momento de formatear la fecha). Dejo mi código en el siguiente comentario.

Aqui mi solucion al reto, aunque no es como me lo esperaba y no me quize complicar 😅.

En la base de datos no hay calificacion de 1-5⭐ asi que use el valor de review_scores_rating que es una puntacion de 1-100 y lo ordene de forma descendente en base al review_scores_rating.

Aqui el codigo 👇

use("sample_airbnb")
db.listingsAndReviews.aggregate([
    {$sort: {
        "review_scores.review_scores_rating": -1
        }
    },
    {
        $project: {
            "_id":0,
          "Nombre de la propiedad:": "$name",
          "Imagen de la propiedad:": "$images.picture_url",
          "Tipo de propiedad:": "$property_type",
          "Numero de camas:": "$beds",
          "Noches minimas de estadia:":"$minimum_nights",
          "Noches maximas de estadia:":"$maximum_nights",
          "Precio:":"$price",
          "Numero de reviews:":"$number_of_reviews",
          "Rating total de las reviews":"$review_scores.review_scores_rating"
        }
    },
    {
        $limit:1000
    },
    {
        $out: "designersReport"
    }
])

Query para ver los resultados

use("sample_airbnb")
db.designersReport.find()