किसी भी डेटाबेस में इंडेक्स बहुत महत्वपूर्ण हैं, और MongoDB के साथ यह अलग नहीं है। इंडेक्स के उपयोग के साथ, MongoDB में प्रश्न करना अधिक कुशल हो जाता है।
यदि आपके पास हजारों दस्तावेज़ों के साथ कोई अनुक्रमणिका नहीं है, और फिर आप कुछ दस्तावेज़ों को खोजने के लिए क्वेरी करते हैं, तो ऐसे मामले में MongoDB को दस्तावेज़ों को खोजने के लिए पूरे संग्रह को स्कैन करने की आवश्यकता होगी। लेकिन अगर आपके पास इंडेक्स थे, तो संग्रह में खोजे जाने वाले दस्तावेजों की संख्या को सीमित करने के लिए MongoDB इन इंडेक्स का उपयोग करेगा।
इंडेक्स विशेष डेटा सेट होते हैं जो संग्रह के डेटा का एक आंशिक हिस्सा संग्रहीत करते हैं। चूंकि डेटा आंशिक है, इसलिए इस डेटा को पढ़ना आसान हो जाता है। यह आंशिक सेट किसी विशिष्ट फ़ील्ड का मान या फ़ील्ड के मान द्वारा आदेशित फ़ील्ड्स का सेट संग्रहीत करता है।
इस ट्यूटोरियल में, आप सीखेंगे -
- सूचकांक के प्रभाव को समझना
- इंडेक्स कैसे बनाएं: createIndex ()
- सूचकांक कैसे खोजें: getindexes ()
- सूचकांक कैसे छोड़ें: ड्रॉपइंडेक्स ()
सूचकांक के प्रभाव को समझना
अब भले ही परिचय से हमने देखा है कि इंडेक्स प्रश्नों के लिए अच्छा है, लेकिन बहुत सारे इंडेक्स होने से अन्य ऑपरेशन जैसे इन्सर्ट, डिलीट और अपडेट ऑपरेशन धीमा हो सकता है।
यदि दस्तावेज़ों पर अक्सर डाला जाता है, हटाएं और अपडेट किए जाते हैं, तो अनुक्रमणिका को अक्सर बदलना होगा, जो संग्रह के लिए केवल एक ओवरहेड होगा।
नीचे दिए गए उदाहरण से पता चलता है कि संग्रह में कौन से क्षेत्र मूल्य सूचकांक बना सकते हैं। एक सूचकांक या तो संग्रह में सिर्फ एक क्षेत्र पर आधारित हो सकता है, या यह संग्रह में कई क्षेत्रों पर आधारित हो सकता है।
नीचे दिए गए उदाहरण में, कर्मचारी "1" और कर्मचारी "एए" का उपयोग संग्रह में दस्तावेजों को अनुक्रमित करने के लिए किया जाता है। इसलिए जब कोई क्वेरी खोज की जाती है, तो इन इंडेक्स का उपयोग संग्रह में आवश्यक दस्तावेजों को जल्दी और कुशलता से खोजने के लिए किया जाएगा।
तो भले ही खोज क्वेरी EmployeeCode "AA" पर आधारित हो, लेकिन वह दस्तावेज़ वापस कर दिया जाएगा।
इंडेक्स कैसे बनाएं: createIndex ()
MongoDB में एक इंडेक्स बनाना " createIndex " विधि का उपयोग करके किया जाता है ।
निम्न उदाहरण दिखाता है कि संग्रह में सूचकांक कैसे जोड़ें। मान लेते हैं कि हमारे पास अपना समान कर्मचारी संग्रह है जिसमें "कर्मचारी" और "कर्मचारी नाम" के फील्ड नाम हैं।
db.Employee.createIndex({Employeeid:1})
कोड स्पष्टीकरण:
- CreateIndex विधि दस्तावेज़ के "EmployeeID" पर आधारित एक सूचकांक बनाने के लिए प्रयोग किया जाता है।
- '1' पैरामीटर इंगित करता है कि जब सूचकांक "कर्मचारी" फ़ील्ड मानों के साथ बनाया जाता है, तो उन्हें क्रम में क्रमबद्ध किया जाना चाहिए। कृपया ध्यान दें कि यह _id फ़ील्ड से भिन्न है (आईडी फ़ील्ड का उपयोग संग्रह में प्रत्येक दस्तावेज़ को विशिष्ट रूप से पहचानने के लिए किया जाता है) जो स्वचालित रूप से MongoDB द्वारा संग्रह में बनाया गया है। दस्तावेजों को अब कर्मचारी के अनुसार क्रमबद्ध किया जाएगा न कि _id फ़ील्ड के अनुसार।
यदि कमांड को सफलतापूर्वक निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा:
आउटपुट:
- NumIndexesBefore: 1 फ़ील्ड मानों (संग्रह में वास्तविक फ़ील्ड) की संख्या को इंगित करता है जो कमांड चलने से पहले अनुक्रमित में थे। याद रखें कि प्रत्येक संग्रह में _id फ़ील्ड है जो इंडेक्स के फ़ील्ड मान के रूप में भी गिना जाता है। चूंकि _id इंडेक्स फ़ील्ड संग्रह का हिस्सा है जब इसे शुरू में बनाया जाता है, numIndexesBefore का मान 1 है।
- NumIndexesAfter: 2 फ़ील्ड मानों की संख्या को इंगित करता है जो कमांड चलने के बाद अनुक्रमित में थे।
- यहां "ओके: 1" आउटपुट निर्दिष्ट करता है कि ऑपरेशन सफल था, और नए इंडेक्स को संग्रह में जोड़ा गया है।
उपरोक्त कोड दिखाता है कि एक फ़ील्ड मान के आधार पर एक इंडेक्स कैसे बनाया जा सकता है, लेकिन एक भी कई फ़ील्ड मानों के आधार पर एक इंडेक्स बना सकता है।
निम्नलिखित उदाहरण दिखाता है कि यह कैसे किया जा सकता है;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
कोड स्पष्टीकरण:
- CreateIndex विधि अब कई फील्ड वैल्यू को ध्यान में रखती है जो अब "Employeeid" और "EmployeeName" के आधार पर इंडेक्स बनाएगी। कर्मचारी: 1 और कर्मचारीनाम: 1 इंगित करता है कि सूचकांक को इन 2 फ़ील्ड मानों पर बनाया जाना चाहिए: 1 यह दर्शाता है कि यह आरोही क्रम में होना चाहिए।
सूचकांक कैसे खोजें: getindexes ()
MongoDB में एक सूचकांक ढूँढना "getIndexes" विधि का उपयोग करके किया जाता है ।
निम्नलिखित उदाहरण दिखाता है कि यह कैसे किया जा सकता है;
db.Employee.getIndexes()
कोड स्पष्टीकरण:
- एक संग्रह में सभी अनुक्रमितों को खोजने के लिए getIndexes विधि का उपयोग किया जाता है।
यदि कमांड को सफलतापूर्वक निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा:
आउटपुट:
- आउटपुट एक दस्तावेज़ देता है जो सिर्फ दिखाता है कि संग्रह में 2 सूचकांक हैं जो _id फ़ील्ड है, और दूसरा कर्मचारी आईडी फ़ील्ड है। : 1 इंगित करता है कि सूचकांक में क्षेत्र मान आरोही क्रम में बनाए गए हैं।
सूचकांक कैसे छोड़ें: ड्रॉपइंडेक्स ()
MongoDB में एक इंडेक्स को हटाकर ड्रॉपइंडेक्स विधि का उपयोग करके किया जाता है।
निम्नलिखित उदाहरण दिखाता है कि यह कैसे किया जा सकता है;
db.Employee.dropIndex(Employeeid:1)
कोड स्पष्टीकरण:
- DropIndex विधि आवश्यक फ़ील्ड मान लेता है जिसे इंडेक्स से निकालने की आवश्यकता होती है।
यदि कमांड को सफलतापूर्वक निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा:
आउटपुट:
- NIndexesWas: 3 फ़ील्ड मानों की संख्या को इंगित करता है जो कमांड चलने से पहले अनुक्रमित में थे। याद रखें कि प्रत्येक संग्रह में _id फ़ील्ड है जो इंडेक्स के फ़ील्ड मान के रूप में भी गिना जाता है।
- ठीक है: 1 आउटपुट निर्दिष्ट करता है कि ऑपरेशन सफल था, और "कर्मचारी" फ़ील्ड को इंडेक्स से हटा दिया गया है।
संग्रह में एक बार में सभी अनुक्रमित को निकालने के लिए, कोई ड्रॉपइंडैक्स कमांड का उपयोग कर सकता है।
निम्न उदाहरण दिखाता है कि यह कैसे किया जा सकता है।
db.Employee.dropIndex()
कोड स्पष्टीकरण:
- ड्रॉपइंडैक्स विधि _id इंडेक्स को छोड़कर सभी इंडेक्स को छोड़ देगी।
यदि कमांड को सफलतापूर्वक निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा:
आउटपुट:
- NIndexesWas: 2 फ़ील्ड मानों की संख्या को इंगित करता है जो कमांड चलने से पहले अनुक्रमित में थे।
- फिर से याद रखें कि प्रत्येक संग्रह में _id फ़ील्ड है जो इंडेक्स के फ़ील्ड मान के रूप में भी गिना जाता है, और इसे MongoDB द्वारा हटाया नहीं जाएगा और यही संदेश इंगित करता है।
- ठीक है: 1 आउटपुट निर्दिष्ट करता है कि ऑपरेशन सफल था।
सारांश
- एक संग्रह में दस्तावेजों की तेजी से और कुशल खोज के लिए परिभाषित सूचकांक महत्वपूर्ण हैं।
- इंडेक्सइंडेक्स विधि का उपयोग करके इंडेक्स बनाए जा सकते हैं। इंडेक्स केवल एक फ़ील्ड या कई फ़ील्ड मानों पर बनाए जा सकते हैं।
- इंडेक्स को गेटइंडेक्स विधि का उपयोग करके पाया जा सकता है।
- सभी इंडेक्स को छोड़ने के लिए इंडेक्स को सिंगल इंडेक्स या ड्रॉपइंडेक्स के लिए ड्रॉपइंडेक्स का उपयोग करके हटाया जा सकता है।