Om jag förstår det rätt vill du ha intäkterna per kund och per månad.
Operatorn $group i en samlad fråga är precis vad du letar efter här.
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
Med ovanstående fråga kommer en kund att dyka upp mer än en gång om de beställer på separata månader. Jag förstod inte om det var det du ville eller inte. Om du istället vill ha det totala värdet för ALLA beställningar från den kunden, men även sorterade efter den FÖRSTA gången de någonsin beställde, gör du så här istället:
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"}
}
}], ... );