Se bem entendi você quer a receita por cliente e por mês.
O operador $group em uma consulta agregada é exatamente o que você está procurando aqui.
db.orders.aggregate([
{ $group : {
_id: {
customer_id: "$customer_id",
month: {$month: "$order_date"}
},
revenue: {$sum: "$net_revenue"}
}
}], ... );
Com a consulta acima, um cliente aparecerá mais de uma vez se fizer o pedido em meses separados. Não entendi se era isso que você queria ou não. Se, em vez disso, você deseja o valor total de TODOS os pedidos desse cliente, mas também classificado pela PRIMEIRA vez que ele pediu, faça isso:
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"}
}
}], ... );