MongoDB इंडेक्सिंग: createIndex() और dropIndex()
⚡ स्मार्ट सारांश
MongoDB इंडेक्स किसी कलेक्शन के फ़ील्ड्स के एक क्रमबद्ध उपसमूह को स्टोर करते हैं ताकि क्वेरी प्रत्येक रिकॉर्ड को स्कैन किए बिना दस्तावेज़ों का पता लगा सकें। createIndex, getIndexes और dropIndex विधियाँ इन प्रदर्शन-महत्वपूर्ण संरचनाओं को बनाती हैं, सूचीबद्ध करती हैं और हटाती हैं।

क्या हैं MongoDB अनुक्रमणिका?
किसी भी डाटाबेस में इंडेक्स बहुत महत्वपूर्ण होते हैं, और MongoDB यह कोई अलग बात नहीं है। इंडेक्स के उपयोग से, क्वेरी निष्पादित करना आसान हो जाता है। MongoDB अधिक कुशल हो जाता है.
यदि आपके पास बिना इंडेक्स के हजारों दस्तावेजों का संग्रह है, और फिर आप कुछ दस्तावेजों को खोजने के लिए क्वेरी करते हैं, तो ऐसे मामले में MongoDB दस्तावेजों को खोजने के लिए पूरे संग्रह को स्कैन करना होगा। लेकिन अगर आपके पास इंडेक्स हैं, MongoDB इन अनुक्रमितों का उपयोग संग्रह में खोजे जाने वाले दस्तावेजों की संख्या को सीमित करने के लिए किया जाएगा।
इंडेक्स विशेष डेटा सेट होते हैं जो संग्रह के डेटा के एक आंशिक भाग को संग्रहीत करते हैं। चूंकि डेटा आंशिक होता है, इसलिए इसे पढ़ना आसान हो जाता है। यह आंशिक सेट किसी विशिष्ट फ़ील्ड या फ़ील्ड के समूह के मान को, फ़ील्ड के मान के अनुसार क्रमबद्ध करके संग्रहीत करता है।
सूचकांकों के प्रभाव को समझना
हालांकि परिचय में यह दिखाया गया है कि इंडेक्स क्वेरी के लिए अच्छे होते हैं, लेकिन बहुत अधिक इंडेक्स होने से इंसर्ट, डिलीट और अपडेट जैसी अन्य क्रियाएं धीमी हो सकती हैं।
यदि दस्तावेजों पर बार-बार इंसर्ट, डिलीट और अपडेट ऑपरेशन किए जाते हैं, तो इंडेक्स को भी उतनी ही बार बदलना होगा, जो कि संग्रह के लिए एक अतिरिक्त बोझ होगा।
नीचे दिया गया उदाहरण दर्शाता है कि किसी संग्रह में कौन से फ़ील्ड मान इंडेक्स का निर्माण कर सकते हैं। इंडेक्स संग्रह में केवल एक फ़ील्ड पर आधारित हो सकता है, या यह संग्रह में कई फ़ील्ड पर आधारित हो सकता है।
नीचे दिए गए उदाहरण में, एम्प्लॉई आईडी “1” और एम्प्लॉईCode संग्रह में मौजूद दस्तावेज़ों को अनुक्रमित करने के लिए "AA" का उपयोग किया जाता है। इसलिए, जब कोई खोज क्वेरी की जाती है, तो इन अनुक्रमणिकाओं का उपयोग संग्रह में आवश्यक दस्तावेज़ों को शीघ्रता और कुशलता से खोजने के लिए किया जाता है।
इसलिए भले ही खोज क्वेरी कर्मचारी पर आधारित होCode “एए”, वह दस्तावेज़ वापस कर दिया जाएगा।
इंडेक्स कैसे बनाएं: createIndex()
इंडेक्स बनाना MongoDB का उपयोग करके किया जाता है createIndex विधि.
निम्नलिखित उदाहरण दर्शाता है कि किसी कलेक्शन में इंडेक्स कैसे जोड़ा जाता है। मान लीजिए कि हमारे पास वही एम्प्लॉई कलेक्शन है, जिसमें "Employeeid" और "EmployeeName" फ़ील्ड नाम हैं।
db.Employee.createIndex({Employeeid:1})
Code स्पष्टीकरण:
- RSI createIndex विधि का उपयोग दस्तावेज़ के "कर्मचारी आईडी" के आधार पर एक सूचकांक बनाने के लिए किया जाता है।
- “1” पैरामीटर यह दर्शाता है कि जब “Employeeid” फ़ील्ड मानों के साथ इंडेक्स बनाया जाता है, तो उन्हें आरोही क्रम में सॉर्ट किया जाना चाहिए। कृपया ध्यान दें कि यह _id फ़ील्ड (जो प्रत्येक दस्तावेज़ को विशिष्ट रूप से पहचानता है) से भिन्न है। MongoDB यह स्वचालित रूप से बन जाता है। अब दस्तावेज़ों को एम्प्लॉई आईडी के अनुसार क्रमबद्ध किया जाएगा, न कि _id फ़ील्ड के अनुसार।
यदि कमांड सफलतापूर्वक निष्पादित हो जाती है, तो निम्नलिखित आउटपुट प्रदर्शित होगा:
आउटपुट:
- numIndexesBefore: 1 कमांड चलाने से पहले इंडेक्स में फ़ील्ड मानों की संख्या को दर्शाता है। प्रत्येक संग्रह में _id फ़ील्ड होता है, जिसे फ़ील्ड मान के रूप में भी गिना जाता है, इसलिए numIndexesBefore 1 है।
- numIndexesAfter: 2 कमांड चलाने के बाद इंडेक्स में फ़ील्ड मानों की संख्या को दर्शाता है।
- “ok: 1” आउटपुट यह दर्शाता है कि ऑपरेशन सफल रहा और नया इंडेक्स कलेक्शन में जोड़ दिया गया है।
उपरोक्त कोड एक फ़ील्ड मान के आधार पर इंडेक्स बनाने का तरीका दर्शाता है, लेकिन एकाधिक फ़ील्ड मानों के आधार पर भी इंडेक्स बनाया जा सकता है। निम्नलिखित उदाहरण दिखाता है कि यह कैसे किया जा सकता है:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
अब createIndex विधि कई फ़ील्ड मानों को ध्यान में रखती है, जिसके कारण इंडेक्स "Employeeid" और "EmployeeName" के आधार पर बनाया जाएगा। Employeeid:1 और EmployeeName:1 यह दर्शाते हैं कि इंडेक्स इन दो फ़ील्ड मानों पर बनाया जाना चाहिए, जिसमें :1 आरोही क्रम को इंगित करता है। इसे संयुक्त इंडेक्स कहा जाता है।
इंडेक्स कैसे खोजें: getIndexes()
किसी सूचकांक को ढूँढना MongoDB का उपयोग करके किया जाता है सूचकांक प्राप्त करें विधि। निम्नलिखित उदाहरण दर्शाता है कि यह कैसे किया जा सकता है:
db.Employee.getIndexes()
getIndexes विधि का उपयोग किसी संग्रह में सभी अनुक्रमितों को खोजने के लिए किया जाता है।
यदि कमांड सफलतापूर्वक निष्पादित हो जाती है, तो निम्नलिखित आउटपुट प्रदर्शित होगा:
आउटपुट:
आउटपुट एक दस्तावेज़ लौटाता है जो दर्शाता है कि संग्रह में दो इंडेक्स हैं: _id फ़ील्ड और Employeeid फ़ील्ड। :1 इंगित करता है कि इंडेक्स में फ़ील्ड मान आरोही क्रम में बनाए गए हैं।
इंडेक्स कैसे हटाएं: dropIndex()
इंडेक्स को हटाना MongoDB का उपयोग करके किया जाता है ड्रॉपइंडेक्स विधि। निम्नलिखित उदाहरण दर्शाता है कि यह कैसे किया जा सकता है:
db.Employee.dropIndex({Employeeid:1})
dropIndex विधि उन आवश्यक फ़ील्ड मानों को लेती है जिन्हें इंडेक्स से हटाने की आवश्यकता होती है।
यदि कमांड सफलतापूर्वक निष्पादित हो जाती है, तो निम्नलिखित आउटपुट प्रदर्शित होगा:
आउटपुट:
- nIndexesWas: 3 कमांड चलाने से पहले इंडेक्स में फ़ील्ड मानों की संख्या को दर्शाता है। प्रत्येक संग्रह में _id फ़ील्ड होता है, जिसे फ़ील्ड मान के रूप में भी गिना जाता है।
- ok: 1 आउटपुट निर्दिष्ट करता है कि ऑपरेशन सफल रहा, और "Employeeid" फ़ील्ड को इंडेक्स से हटा दिया गया है।
संग्रह में मौजूद सभी इंडेक्स को एक साथ हटाने के लिए, आप dropIndexes कमांड का उपयोग कर सकते हैं। निम्नलिखित उदाहरण दर्शाता है कि यह कैसे किया जा सकता है:
db.Employee.dropIndexes()
dropIndexes विधि _id इंडेक्स को छोड़कर सभी इंडेक्स को हटा देगी।
यदि कमांड सफलतापूर्वक निष्पादित हो जाती है, तो निम्नलिखित आउटपुट प्रदर्शित होगा:
आउटपुट:
- nIndexesWas: 2 कमांड चलाने से पहले इंडेक्स में फ़ील्ड मानों की संख्या को इंगित करता है।
- प्रत्येक संग्रह में _id फ़ील्ड होता है, जिसे फ़ील्ड मान के रूप में भी गिना जाता है और इसे हटाया नहीं जाएगा। MongoDBयही इस संदेश का तात्पर्य है।
- ओके: 1 आउटपुट यह निर्दिष्ट करता है कि ऑपरेशन सफल रहा।










