MongoDB 4.4 से शुरू होकर, अब हम क्वेरी प्लान से इंडेक्स छिपा सकते हैं। यह हमें इंडेक्स को वास्तव में गिराए बिना किसी इंडेक्स को छोड़ने के संभावित प्रभाव का मूल्यांकन करने में सक्षम बनाता है।
यदि इसे छुपाने से नकारात्मक प्रभाव पड़ता है, तो हम अनुक्रमणिका को प्रदर्शित कर सकते हैं। यह हमें इंडेक्स को छोड़ने, फिर इसे फिर से बनाने से बचाता है।
MongoDB में किसी इंडेक्स को छिपाने के 3 तरीके नीचे दिए गए हैं।
hideIndex() विधि
db.collection.hideIndex() मेथड ठीक वैसा ही करता है जैसा वह वादा करता है - यह इंडेक्स (क्वेरी प्लानर से) को छुपाता है।
उदाहरण:
db.pets.hideIndex("idx_weight_-1") आउटपुट:
{ "hidden_old" : false, "hidden_new" : true, "ok" : 1 }
यह idx_weight_-1 . नामक अनुक्रमणिका को छुपाता है pets . पर संग्रह। हम वैकल्पिक रूप से नाम के बजाय इंडेक्स के लिए मुख्य पैटर्न प्रदान कर सकते हैं।
hideIndex() . का आउटपुट विधि hidden . के लिए पुराना मान प्रदर्शित करती है फ़ील्ड (इस मामले में false ) और नया मान (इस मामले में true )।
हालांकि, अगर हम पहले से छिपी हुई अनुक्रमणिका को छिपाते हैं (या पहले से छिपी हुई अनुक्रमणिका को अनहाइड करते हैं), तो ये प्रदर्शित नहीं होती हैं, और हमें केवल निम्नलिखित मिलते हैं:
{ "ok" : 1 } किसी भी स्थिति में, अनुक्रमणिका अब छिपी हुई है।
hideIndex() विधि वास्तव में collMod . के लिए एक आवरण है प्रशासन आदेश (नीचे)।
द collMod कमांड
collMod व्यवस्थापन आदेश हमें संग्रह में विकल्प जोड़ने या दृश्य परिभाषाओं को संशोधित करने में सक्षम बनाता है।
हम इसका उपयोग hidden: true . पास करके किसी इंडेक्स को छिपाने के लिए कर सकते हैं ।
उदाहरण:
db.runCommand( {
collMod: "pets",
index: {
name: "idx_weight_-1",
hidden: true
}
} ) परिणाम:
{ "hidden_old" : false, "hidden_new" : true, "ok" : 1 }
यह वही दस्तावेज़ देता है जो hideIndex() रिटर्न।
hideIndex() . के समान , आपके पास अनुक्रमणिका नाम या उसके प्रमुख पैटर्न को निर्दिष्ट करने का विकल्प होता है।
यहां कुंजी पैटर्न का उपयोग करने का एक उदाहरण दिया गया है:
db.runCommand( {
collMod: "pets",
index: {
keyPattern: { weight : -1 },
hidden: true
}
} )
इस मामले में, सूचकांक को { weight : -1 } . का उपयोग करके परिभाषित किया गया था , और इसलिए इस परिभाषा का उपयोग अनुक्रमणिका नाम के बजाय किया जा सकता है।
इसे सत्यापित करने के लिए, हम getIndexes() . का उपयोग कर सकते हैं सूचकांक की परिभाषा देखने के लिए:
db.pets.getIndexes() परिणाम:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"weight" : -1
},
"name" : "idx_weight_-1",
"hidden" : true
}
]
हम hidden: false . पास करके भी इंडेक्स को अनहाइड कर सकते हैं ।
एक हिडन इंडेक्स बनाएं
इंडेक्स को छिपाने का तीसरा तरीका है कि इसे हिडन इंडेक्स के रूप में बनाया जाए।
ऐसा करने के लिए, hidden: true . का उपयोग करें जब आप अनुक्रमणिका बनाते हैं तो विकल्पों में से एक के रूप में।
उदाहरण:
db.pets.createIndex(
{ type: 1 },
{ hidden: true }
) आउटपुट:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
अब getIndexes() पर कॉल करें हमारे नव निर्मित हिडन इंडेक्स को फिर से जांचने के लिए:
db.pets.getIndexes() परिणाम:
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"weight" : -1
},
"name" : "idx_weight_-1",
"hidden" : true
},
{
"v" : 2,
"hidden" : true,
"key" : {
"type" : 1
},
"name" : "type_1"
}
]
हम देख सकते हैं कि इसे "hidden": true . के साथ बनाया गया है ।
इंडेक्स छुपा नहीं सकते? इस सेटिंग को जांचें।
mongod featureCompatibilityVersion कम से कम 4.4 . होना चाहिए इससे पहले कि आप इंडेक्स छुपा सकें। हालांकि, एक बार छुपाए जाने के बाद, एक इंडेक्स featureCompatibilityVersion . के साथ भी छिपा रहेगा MongoDB 4.4 बायनेरिज़ पर 4.2 पर सेट करें।
आप featureCompatibilityVersion . की जांच कर सकते हैं निम्नलिखित कोड के साथ सेटिंग:
db.adminCommand(
{
getParameter: 1,
featureCompatibilityVersion: 1
}
)
आप इसे setFeatureCompatibilityVersion . का उपयोग करके सेट कर सकते हैं आदेश:
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
setFeatureCompatibilityVersion कमांड को admin में चलाने की जरूरत है डेटाबेस।
यह भी ध्यान दें, आप _id को छिपा नहीं सकते हैं सूचकांक।