Hvis jeg forstår det rigtigt, vil du have omsætningen pr. kunde og pr. måned.
$group-operatoren i en samlet forespørgsel er præcis, hvad du leder efter her.
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
Med ovenstående forespørgsel vil en kunde dukke op mere end én gang, hvis de bestiller på separate måneder. Jeg forstod ikke om det var det du ville eller ej. Hvis du i stedet vil have den samlede værdi for ALLE ordrer fra den pågældende kunde, men også sorteret efter FØRSTE gang, de nogensinde har bestilt, skal du gøre dette i stedet:
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"}
}
}], ... );