MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB में एक विशिष्ट नाम के साथ एक इंडेक्स कैसे बनाएं?

जब आप MongoDB में एक अनुक्रमणिका बनाते हैं, यदि आप इसके लिए कोई नाम निर्दिष्ट नहीं करते हैं, तो MongoDB एक निर्दिष्ट करेगा।

डिफ़ॉल्ट नाम में प्रत्येक अनुक्रमित फ़ील्ड नाम होता है जो उस फ़ील्ड के लिए कुंजी मान के साथ संयोजित होता है। उदाहरण के लिए, क्रमबद्ध करें, या यदि यह एक text है अनुक्रमणिका, स्ट्रिंग _text , या यदि यह एक 2dsphere है अनुक्रमणिका, स्ट्रिंग _2dsphere , आदि.

लेकिन आप MongoDB में अनुक्रमणिका बनाते समय अपना नाम निर्दिष्ट कर सकते हैं।

डिफ़ॉल्ट नाम

मान लीजिए हम इस तरह एक इंडेक्स बनाते हैं:

db.employees.createIndex(
  { 
    name: 1, 
    salary: -1 }
  )

हमने कोई नाम निर्दिष्ट नहीं किया है, इसलिए MongoDB इंडेक्स विनिर्देश के आधार पर स्वचालित रूप से एक नाम उत्पन्न करेगा।

हम getIndexes() . का उपयोग करते हैं इसे सत्यापित करने के लिए:

db.employees.getIndexes()

परिणाम:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"name" : 1,
			"salary" : -1
		},
		"name" : "name_1_salary_-1"
	}
]

यहां दो इंडेक्स हैं। पहला डिफ़ॉल्ट है _id अनुक्रमणिका जो स्वचालित रूप से संग्रह के साथ बनाई जाती है। दूसरा वह है जिसे हमने अभी बनाया है।

इस मामले में, MongoDB ने इंडेक्स को name_1_salary_-1 . नाम दिया है .

यदि हमें कभी भी इस सूचकांक को गिराने की आवश्यकता पड़े, तो हमें या तो इसका नाम याद रखना होगा या इसकी परिभाषा को। यह देखते हुए कि डिफ़ॉल्ट नाम परिभाषा पर आधारित है, यदि आपके पास अधिक जटिल परिभाषा है तो यह थोड़ा बोझिल हो सकता है।

किसी भी स्थिति में, हम उपरोक्त अनुक्रमणिका को इस प्रकार छोड़ सकते हैं:

db.employees.dropIndex("name_1_salary_-1")

नाम निर्दिष्ट करें

अगर हम इंडेक्स के लिए अपना खुद का नाम बनाना चाहते हैं, तो हम इसे इस तरह बना सकते हैं:

db.employees.createIndex(
  { 
    name: 1,
    salary: -1 
  },
  { 
    name: "employee_salary" 
    }
)

हमने केवल एक name जोड़ा था सूचकांक के लिए विकल्पों की आपूर्ति के लिए एक वैकल्पिक दस्तावेज़ के भीतर फ़ील्ड।

यदि हम अब सूचकांक की जाँच करते हैं, तो हम देख सकते हैं कि इसमें वह नाम है जो हमने प्रदान किया है:

db.employees.getIndexes()

परिणाम:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"name" : 1,
			"salary" : -1
		},
		"name" : "employee_salary"
	}
]

अन्य विकल्पों के साथ नाम शामिल करना

पिछले उदाहरण में, name फ़ील्ड ही एकमात्र विकल्प है जो हमने अनुक्रमणिका बनाते समय प्रदान किया था। नाम ही एकमात्र विकल्प नहीं है जिसे आप किसी अनुक्रमणिका के लिए निर्दिष्ट कर सकते हैं।

आप अन्य विकल्प भी प्रदान कर सकते हैं, जैसे कि डिफ़ॉल्ट भाषा, भाषा ओवरराइड, आदि। किसी भी अन्य विकल्प को उसी दस्तावेज़ में संलग्न करना होगा, जिसे अल्पविराम द्वारा अलग किया गया हो।

यहां दो अन्य विकल्पों के साथ एक इंडेक्स बनाने का उदाहरण दिया गया है (लेकिन नाम निर्दिष्ट किए बिना):

db.sitcoms.createIndex( 
  { 
    "original_name": "text",
    "translations.sitcom_name": "text"
  },
  {
    "default_language": "danish",
    "language_override": "sprog"
  }
)

यह पिछले संग्रह से भिन्न संग्रह पर एक भिन्न अनुक्रमणिका है। लेकिन आप देख सकते हैं कि हमने अपना default_language निर्दिष्ट किया है और एक language_override मूल्य। यह एक कंपाउंड इंडेक्स भी है (यह एक इंडेक्स है जिसमें कई फ़ील्ड शामिल हैं)।

मैंने कोई नाम नहीं बताया, इसलिए हम देख सकते हैं कि इस तरह के इंडेक्स के साथ नाम कब तक बनता है:

db.employees.getIndexes()

परिणाम:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "original_name_text_translations.sitcom_name_text",
		"default_language" : "danish",
		"language_override" : "sprog",
		"weights" : {
			"original_name" : 1,
			"translations.sitcom_name" : 1
		},
		"textIndexVersion" : 3
	}
]

तो इस मामले में MongoDB ने इंडेक्स को original_name_text_translations.sitcom_name_text का डिफ़ॉल्ट नाम दिया है , क्योंकि यह हमारी अनुक्रमणिका परिभाषा से लिया गया है।

इस अनुक्रमणिका को नाम से छोड़ने के लिए हमें निम्नलिखित कोड का उपयोग करना होगा:

db.sitcoms.dropIndex("original_name_text_translations.sitcom_name_text")

ऐसी अनुक्रमणिका में नाम शामिल करने के लिए, हम इसे उसी दस्तावेज़ में प्रदान कर सकते हैं जिसका उपयोग हमने डिफ़ॉल्ट भाषा और भाषा ओवरराइड निर्दिष्ट करने के लिए किया था।

तो हम इस तरह इंडेक्स बना सकते हैं:

db.sitcoms.createIndex( 
  { 
    "original_name": "text",
    "translations.sitcom_name": "text"
  },
  {
    "default_language": "danish",
    "language_override": "sprog",
    "name": "sitcoms_da"
  }
)

इस मामले में हमने sitcoms_da . का इस्तेमाल किया सूचकांक नाम के रूप में।

अब जब हमें अनुक्रमणिका की सूची मिलती है, तो हम अपना निर्दिष्ट नाम देख सकते हैं:

db.sitcoms.getIndexes()

परिणाम:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"_fts" : "text",
			"_ftsx" : 1
		},
		"name" : "sitcoms_da",
		"default_language" : "danish",
		"language_override" : "sprog",
		"weights" : {
			"original_name" : 1,
			"translations.sitcom_name" : 1
		},
		"textIndexVersion" : 3
	}
]

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पिमोंगो के साथ मोंगोडब में ऑब्जेक्ट आईडी द्वारा खोजें

  2. SQL में अपने समूह के लिए अधिकतम मान वाली पंक्तियों का चयन करने के 5 तरीके

  3. MongoDB में ObjectID के साथ एक दस्तावेज़ खोजें

  4. पता लगाएँ कि क्या कोई क्वेरी MongoDB में इंडेक्स का उपयोग करती है

  5. मोंगोडीबी पर ग्रिडएफएस का उपयोग कब करें?