MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

LEFT JOIN mit GROUP by in MongoDB

Die "Join"-Konzepte existieren in Mongodb nicht wirklich, da wir von Natur aus über unstrukturierte Datenbanken sprechen. Dann irgendwann $lookup wurde hinzugefügt und gab uns eine "links verbinden"-Fähigkeit, dennoch habe ich das Gefühl, dass es "falsch" ist, diese strukturierten Konzepte im Umgang mit Mongo zu verwenden.

Vor diesem Hintergrund sollte die folgende Pipeline Ihren Anforderungen genügen:

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

    }
])