MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

LEFT JOIN com GROUP by no MongoDB


Os conceitos de "junção" não existem realmente no Mongodb, pois estamos falando de banco de dados não estruturado por natureza, então em algum momento $lookup foi adicionado e nos deu um recurso de "junção à esquerda", ainda sinto que é "errado" usar esses conceitos estruturados ao lidar com o Mongo.

Com isso dito, este pipeline a seguir deve atender às suas necessidades:
db.Orders.aggregate([
    {
        $group: {
            _id: "$product_id",
            sum: {$sum : 1}
        }
    },
    {
        $lookup: {
            from: "product",
            local_field: "_id",
            foreign_field: "_id",
            as: "product"
        }
    },
    {
        $unwind: "$product"
    },
    {
        $project: {
            Product_id: "$_id",
            OrderCount: "$sum",
            ProductName: "$product.Name"
        }

    }
])