MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

LEFT JOIN avec GROUP by dans MongoDB

Les concepts de "joindre" n'existent pas vraiment dans Mongodb car nous parlons de base de données non structurée par nature, puis à un moment donné $lookup a été ajouté et nous a donné une capacité de "jointure à gauche", mais j'ai toujours l'impression que c'est "mal" d'utiliser ces concepts structurés lorsqu'il s'agit de Mongo.

Cela dit, le pipeline suivant devrait suffire à vos besoins :

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

    }
])