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

Gruppieren Sie die MongoDB-Erfassung nach Monat und den aggregierten Umsatz für das Abwanderungs-/Umsatzdiagramm

Wenn ich das richtig verstehe, möchten Sie den Umsatz pro Kunde und pro Monat.

Der $group-Operator in einer aggregierten Abfrage ist genau das, wonach Sie hier suchen.

db.orders.aggregate([
    { $group : { 
            _id: { 
                customer_id: "$customer_id",
                month: {$month: "$order_date"}
            },
            revenue: {$sum: "$net_revenue"} 
        }
    }], ... );

Mit der obigen Abfrage erscheint ein Kunde mehr als einmal, wenn er in verschiedenen Monaten bestellt. Ich habe nicht verstanden, ob du das wolltest oder nicht. Wenn Sie stattdessen den Gesamtwert für ALLE Bestellungen dieses Kunden wünschen, aber auch sortiert nach der ERSTEN Bestellung, die er je bestellt hat, gehen Sie stattdessen wie folgt vor:

db.orders.aggregate([
    { $sort: { order_date : 1 } }, //order by date so that $first is correct
    { $group : { 
            _id: { 
                customer_id: "$customer_id",                
            },
            month: { $first: {$month: "$order_date"} }
            revenue: {$sum: "$net_revenue"} 
        }
    }], ... );