私が正しく理解していれば、顧客別および月別の収益が必要です。
集計クエリの$group演算子は、まさにここで探しているものです。
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
上記のクエリでは、顧客が別々の月に注文した場合、顧客は複数回表示されます。それがあなたが望んでいたものであるかどうか私は理解していませんでした。代わりに、その顧客からのすべての注文の合計値が必要であるが、顧客が初めて注文したときにも並べ替える場合は、代わりに次のようにします。
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"}
}
}], ... );