क्या आप सुनिश्चित हैं कि आपकी अनुक्रमणिका बनाई गई है? क्या आप 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 })
आपको एक अधिक सटीक अनुक्रमणिका प्रदान करेगा जो आपको निम्न के लिए क्वेरी करने में सक्षम बनाएगी:
yearyearऔरmonthyearऔरmonthऔरdayyearऔर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 })
तब केवल सूचकांक का उपयोग किया जाएगा, जो कि अधिकतम प्रदर्शन है!