अगर मैं सही ढंग से समझूं तो आप ग्राहक और महीने के हिसाब से राजस्व चाहते हैं।
कुल क्वेरी में $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"}
}
}], ... );