Jika saya mengerti benar Anda ingin pendapatan oleh pelanggan dan bulan.
Operator $group dalam kueri agregat persis seperti yang Anda cari di sini.
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
Dengan query di atas, pelanggan akan muncul lebih dari sekali jika mereka memesan pada bulan yang berbeda. Saya tidak mengerti apakah itu yang Anda inginkan atau tidak. Jika Anda menginginkan nilai total untuk SEMUA pesanan dari pelanggan itu, tetapi juga diurutkan berdasarkan waktu PERTAMA kali mereka memesan, lakukan ini:
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"}
}
}], ... );