MongoDB - कवर किए गए प्रश्न

इस अध्याय में, हम कवर किए गए प्रश्नों के बारे में जानेंगे।

एक कवर किया गया प्रश्न क्या है?

आधिकारिक MongoDB प्रलेखन के अनुसार, एक कवर की गई क्वेरी एक क्वेरी है जिसमें -

  • क्वेरी में सभी फ़ील्ड एक अनुक्रमणिका का हिस्सा हैं।
  • क्वेरी में दिए गए सभी फ़ील्ड एक ही सूचकांक में हैं।

चूंकि क्वेरी में मौजूद सभी फ़ील्ड एक इंडेक्स का हिस्सा हैं, MongoDB क्वेरी की शर्तों से मेल खाता है और वास्तव में दस्तावेजों के अंदर देखे बिना उसी इंडेक्स का उपयोग करके परिणाम देता है। चूंकि अनुक्रमित रैम में मौजूद होते हैं, इसलिए दस्तावेज़ों को स्कैन करके डेटा लाने की तुलना में अनुक्रमित से डेटा प्राप्त करना बहुत तेज़ होता है।

कवर की गई क्वेरीज़ का उपयोग करना

कवर किए गए प्रश्नों का परीक्षण करने के लिए, निम्नलिखित दस्तावेज़ पर विचार करें users संग्रह -

{
   "_id": ObjectId("53402597d852426020000003"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "gender": "M",
   "name": "Tom Benzamin",
   "user_name": "tombenzamin"
}

हम पहले के लिए एक कंपाउंड इंडेक्स बनाएंगे users खेतों पर संग्रह gender तथा user_name निम्नलिखित प्रश्न का उपयोग कर -

>db.users.createIndex({gender:1,user_name:1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}

अब, यह सूचकांक निम्नलिखित प्रश्न को कवर करेगा -

>db.users.find({gender:"M"},{user_name:1,_id:0})
{ "user_name" : "tombenzamin" }

यह कहना है कि उपरोक्त क्वेरी के लिए, MongoDB डेटाबेस दस्तावेजों में नहीं जाएगा। इसके बजाय यह अनुक्रमित डेटा से आवश्यक डेटा प्राप्त करेगा जो बहुत तेज़ है।

चूंकि हमारे सूचकांक में शामिल नहीं है _idफ़ील्ड, हमने अपनी क्वेरी के परिणाम सेट से स्पष्ट रूप से बाहर रखा है, क्योंकि हर क्वेरी में डिफ़ॉल्ट रिटर्न _id फ़ील्ड द्वारा MongoDB है। तो निम्नलिखित क्वेरी ऊपर बनाए गए सूचकांक के अंदर कवर नहीं की गई होगी -

>db.users.find({gender:"M"},{user_name:1})
{ "_id" : ObjectId("53402597d852426020000003"), "user_name" : "tombenzamin" }

अंत में, याद रखें कि यदि कोई सूचकांक क्वेरी को कवर नहीं कर सकता है तो -

  • अनुक्रमित क्षेत्रों में से कोई भी एक सरणी है
  • अनुक्रमित फ़ील्ड्स में से कोई भी एक उप-साख है