क्या आप सुनिश्चित हैं कि आपकी अनुक्रमणिका बनाई गई है? क्या आप getIndexes()
. का आउटपुट प्रदान कर सकते हैं आपके संग्रह का
उदाहरण:db.my_collection.getIndexes()
और आपकी क्वेरी का स्पष्टीकरण
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()
पुनश्च:निश्चित रूप से मुझे इस तथ्य के बारे में @Aesthete से सहमत होना चाहिए कि आप अपनी आवश्यकता से कहीं अधिक स्टोर करते हैं...
29/1/2014 अपडेट
उत्तम! जैसा कि आप देखते हैं कि आपके पास चार अलग-अलग इंडेक्स हैं जब आप एक कंपाउंड इंडेक्स बना सकते हैं जिसमें वे सभी शामिल होंगे।
परिभाषित करना
db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })
आपको एक अधिक सटीक अनुक्रमणिका प्रदान करेगा जो आपको निम्न के लिए क्वेरी करने में सक्षम बनाएगी:
year
year
औरmonth
year
औरmonth
औरday
year
औरmonth
औरday
औरhour
यह आपके प्रश्नों (चार कुंजियों के साथ) को बहुत तेज़ कर देगा, क्योंकि आपके सभी मानदंड इंडेक्स डेटा में पूरे होंगे!
कृपया ध्यान दें कि ensureIndex()
. में चाबियों का क्रम महत्वपूर्ण है, वह आदेश वास्तव में प्रश्नों की उपर्युक्त सूची को परिभाषित करता है!
यह भी ध्यान दें कि यदि आपको केवल इन 4 क्षेत्रों की आवश्यकता है, यदि आप एक सही प्रक्षेपण निर्दिष्ट करते हैं
उदाहरण:db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })
तब केवल सूचकांक का उपयोग किया जाएगा, जो कि अधिकतम प्रदर्शन है!