MongoDB के पास dropIndexes
called नामक एक प्रशासन कमांड है जो एक या अधिक अनुक्रमणिकाएँ गिराता है (_id
. पर अनुक्रमणिका को छोड़कर) फ़ील्ड) निर्दिष्ट संग्रह से।
उदाहरण अनुक्रमणिका
मान लीजिए हमारे पास posts
. नामक संग्रह है निम्नलिखित इंडेक्स के साथ:
db.pets.getIndexes()
परिणाम:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "title" : 1 }, "name" : "title_1" }, { "v" : 2, "key" : { "tags" : 1 }, "name" : "tags_1" }, { "v" : 2, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "body_text", "weights" : { "body" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 3 } ]
इस मामले में हमारे पास चार इंडेक्स हैं। पहला _id
. के लिए डिफ़ॉल्ट इंडेक्स है खेत। जब आप कोई संग्रह बनाते हैं तो यह अनुक्रमणिका अपने आप बन जाती है, और इसे छोड़ा नहीं जा सकता।
अन्य तीन इंडेक्स को गिराया जा सकता है।
एक एकल अनुक्रमणिका छोड़ें
किसी एकल अनुक्रमणिका को छोड़ने के लिए, संग्रह का नाम, साथ ही अनुक्रमणिका का नाम या उसके विनिर्देश दस्तावेज़ को पास करें।
उदाहरण:
db.runCommand( { dropIndexes: "posts", index: "title_1" })
इस मामले में, हम अनुक्रमणिका नाम पास कर रहे हैं।
चलाने से निम्न आउटपुट प्राप्त होता है:
{ "nIndexesWas" : 4, "ok" : 1 }
यह हमें बताता है कि सूचकांक गिरा दिया गया था।
वैकल्पिक रूप से, हम इसके नाम के बजाय अनुक्रमणिका विनिर्देश दस्तावेज़ का उपयोग कर सकते थे, जैसे:
db.runCommand( { dropIndexes: "posts", index: { "title" : 1 } })
एकाधिक अनुक्रमणिका छोड़ें
यदि आप एक से अधिक अनुक्रमणिकाएँ छोड़ना चाहते हैं (लेकिन सभी . नहीं) अनुक्रमणिका), अनुक्रमणिका नामों को एक सरणी में पास करें।
उदाहरण:
db.runCommand( {
dropIndexes: "posts",
index: [ "tags_1", "body_text" ]
})
परिणाम:
{ "nIndexesWas" : 3, "ok" : 1 }
इस स्तर पर, आइए अपनी अनुक्रमणिकाओं की सूची की फिर से जाँच करें:
db.posts.getIndexes()
परिणाम:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
जैसा कि अपेक्षित था, तीन अनुक्रमणिका हटा दी गई हैं और केवल एक ही शेष है (और इसे हटाया नहीं जा सकता)।
किसी सरणी को पास करते समय, टेक्स्ट इंडेक्स को केवल इंडेक्स नाम निर्दिष्ट करके छोड़ा जा सकता है। ऐसे मामलों में, आप टेक्स्ट इंडेक्स को उनके विनिर्देश दस्तावेज़ निर्दिष्ट करके नहीं छोड़ सकते, जैसा कि आप अन्य इंडेक्स के साथ कर सकते हैं।
सभी अनुक्रमणिका छोड़ें
आप तारक वाइल्डकार्ड (*
. का उपयोग करके सभी अनुक्रमणिकाएँ छोड़ सकते हैं )।
इस उदाहरण के लिए, मैंने अनुक्रमणिकाएँ फिर से बनाई हैं। तो इंडेक्स इस तरह दिखते हैं::
db.products.getIndexes()
परिणाम:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" }, { "v" : 2, "key" : { "title" : 1 }, "name" : "title_1" }, { "v" : 2, "key" : { "tags" : 1 }, "name" : "tags_1" }, { "v" : 2, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "body_text", "weights" : { "body" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 3 } ]
अब सभी इंडेक्स को एक साथ छोड़ दें:
db.runCommand( { dropIndexes: "posts", index: "*" })
परिणाम:
{ "nIndexesWas" : 4, "msg" : "non-_id indexes dropped for collection", "ok" : 1 }
_id
. को छोड़कर सभी इंडेक्स हटा दिए गए अनुक्रमणिका (उस अनुक्रमणिका को गिराया नहीं जा सकता)।
आइए फिर से अनुक्रमणिका की जाँच करें।
db.products.getIndexes()
परिणाम:
[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]
जैसा अपेक्षित था, _id
इंडेक्स ही बचा रहता है।
MongoDB दस्तावेज़ीकरण
dropIndexes
. पर अधिक जानकारी के लिए MongoDB दस्तावेज़ देखें आदेश।