Si je comprends bien, vous voulez le chiffre d'affaires par client et par mois.
L'opérateur $group dans une requête agrégée est exactement ce que vous recherchez ici.
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
Avec la requête ci-dessus, un client apparaîtra plus d'une fois s'il commande sur des mois distincts. Je n'ai pas compris si c'était ce que tu voulais ou non. Si, à la place, vous souhaitez obtenir la valeur totale de TOUTES les commandes de ce client, mais triées également en fonction de la PREMIÈRE fois qu'il a commandé, procédez comme suit :
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"}
}
}], ... );