कुछ विचार:
आपको पहले $project
की आवश्यकता नहीं है क्वेरी में चरण। और, आप { "$toDate": "$originaltimestamp" }
शामिल कर सकते हैं $group
. के भीतर मंच का _id
, नीचे के रूप में:
"_id": {
"$dateToString": {
"format": "%Y-%m-%d", "date": { "$toDate": "$originaltimestamp" }
}
}
$push: "$$ROOT"
- $$ROOT
. के बजाय , केवल उन क्षेत्रों को कैप्चर करें जिनकी आपको सबसे अधिक (या महत्वपूर्ण) आवश्यकता है। यह स्मृति उपयोग को कम करने के लिए है। उदाहरण के लिए:
"data": {
$push: {
"subscriber_id": "$subscriber_id",
"type": "$type",
// other required fields...
}
}
अंत में, आप समय पर तिथियों के एक सेट के लिए क्वेरी को प्रतिबंधित करने के बारे में सोच सकते हैं। इसके लिए विभिन्न प्रकार की तिथियों के लिए एक से अधिक बार क्वेरी चलाने की आवश्यकता होगी - लेकिन मुझे लगता है कि यह समग्र रूप से बेहतर हो सकता है। उदाहरण के लिए, month
. से मेल खाने वाला एक महीना खेत। और, यह month
प्रदर्शन के लिए अनुक्रमित किया जा सकता है। इसके लिए एक $match
. शामिल करना होगा उदाहरण के लिए क्वेरी की शुरुआत (प्रथम चरण) में चरण:
{ $match: { month: "202001" } }
और, यह जनवरी 2020 के महीने के डेटा को क्वेरी करेगा।