மோங்கோடிபியில் ஒரு தனித்துவமான குறியீட்டை எவ்வாறு உருவாக்குவது

Monkotipiyil Oru Tanittuvamana Kuriyittai Evvaru Uruvakkuvatu



MongoDB இல், ஒரு குறிப்பிட்ட புலம் அல்லது தொகுப்பில் உள்ள புலங்களின் குழுவில் உள்ள ஒவ்வொரு மதிப்பும் தனித்துவமானது என்பதை ஒரு தனித்துவமான குறியீடு உறுதி செய்கிறது. createIndex() முறையைப் பயன்படுத்தி, குறிப்பிட்ட சேகரிப்புக்கான தனிப்பட்ட குறியீட்டு புலத்தை உருவாக்கலாம். தரவு ஒருமைப்பாட்டைப் பேணுவதற்கும், முக்கியத் துறைகளில் நகல் உள்ளீடுகளைத் தவிர்ப்பதற்கும், தனிப்பட்ட குறியீடுகள் உதவியாக இருக்கும். கட்டுரை குறிப்பிட்ட சேகரிப்புக்கான தனிப்பட்ட குறியீட்டை உருவாக்குவதற்கான வழிகளை உள்ளடக்கியது. db.candidates.insertMany([

{பெயர்: 'அலெக்சா பில்' , தரம்: 'ஏ' , நிச்சயமாக: 'மலைப்பாம்பு' },

{பெயர்: 'ஜேன் மார்க்ஸ்' , தரம்: 'பி' , நிச்சயமாக: 'ஜாவா' },

{பெயர்: 'பால் கென்' , தரம்: 'சி' , நிச்சயமாக: 'சி#' },

{பெயர்: 'எமிலி ஜியோ' , தரம்: 'டி' , நிச்சயமாக: 'php' }

]);

சேகரிப்பில் சில ஆவணங்கள் இருக்கும் போது நாம் ஒரு தனித்துவமான குறியீட்டு புலத்தையும் உருவாக்கலாம். இதற்காக, புதிய சேகரிப்பில் 'வேட்பாளர்கள்' என்ற ஆவணத்தை செருகுவோம், அதன் செருகலுக்கான வினவல் பின்வருமாறு கொடுக்கப்பட்டுள்ளது:







எடுத்துக்காட்டு 1: ஒரு புலத்தின் தனித்துவமான குறியீட்டை உருவாக்கவும்

createIndex() முறையைப் பயன்படுத்தி நாம் குறியீட்டை உருவாக்கலாம் மற்றும் பூலியன் 'true' உடன் தனித்துவமான விருப்பத்தைக் குறிப்பிடுவதன் மூலம் அந்த புலத்தை தனித்துவமாக்கலாம்.



db.candidates.createIndex( {grade: 1 }, {தனித்துவம்: உண்மை } )

இங்கே, ஒரு குறிப்பிட்ட புலத்தின் தனித்துவமான குறியீட்டை உருவாக்க, “வேட்பாளர்கள்” சேகரிப்பில் createIndex() முறையைத் தொடங்குகிறோம். பின்னர், குறியீட்டு விவரக்குறிப்பிற்கான '1' மதிப்புடன் 'கிரேடு' புலத்தை வழங்குகிறோம். இங்கே '1' இன் மதிப்பு சேகரிப்பின் ஏறுவரிசை குறியீட்டைக் குறிக்கிறது. அடுத்து, 'தரம்' புலத்தின் தனித்துவத்தை செயல்படுத்த, 'உண்மை' மதிப்புடன் 'தனித்துவமான' விருப்பத்தை நாங்கள் குறிப்பிடுகிறோம்.



வெளியீடு 'கிரேடு' புலத்தில் உள்ள தனித்துவமான குறியீடு 'வேட்பாளர்கள்' சேகரிப்புக்காக உருவாக்கப்பட்டதைக் குறிக்கிறது:





எடுத்துக்காட்டு 2: ஒன்றுக்கு மேற்பட்ட புலங்களின் தனித்துவ குறியீட்டை உருவாக்கவும்

முந்தைய எடுத்துக்காட்டில், ஒரு புலம் மட்டுமே தனித்துவமான குறியீட்டாக உருவாக்கப்படுகிறது. ஆனால் createIndex() முறையைப் பயன்படுத்தி ஒரே நேரத்தில் இரண்டு புலங்களை ஒரு தனித்துவமான குறியீட்டாக உருவாக்கலாம்.



db.candidates.createIndex( {grade: 1 , நிச்சயமாக: 1 }, {தனித்துவம்: உண்மை } )

இங்கே, அதே 'கேண்டிடேட்ஸ்' சேகரிப்பில் உள்ள createIndex() முறையை நாங்கள் அழைக்கிறோம். நாங்கள் createIndex() முறையில் இரண்டு புலங்களைக் குறிப்பிடுகிறோம் - 'கிரேடு' மற்றும் 'கோர்ஸ்' - முதல் வெளிப்பாடாக '1' மதிப்புடன். பின்னர், இந்த இரண்டு தனித்துவமான புலங்களை உருவாக்க, 'உண்மை' மதிப்புடன் தனித்துவமான விருப்பத்தை அமைக்கிறோம்.

வெளியீடு பின்வரும் 'வேட்பாளர்கள்' சேகரிப்புக்கான இரண்டு தனிப்பட்ட குறியீடுகளான 'grade_1' மற்றும் 'course_1' ஆகியவற்றைக் குறிக்கிறது:

எடுத்துக்காட்டு 3: புலங்களின் கூட்டு தனித்துவ குறியீட்டை உருவாக்கவும்

இருப்பினும், ஒரே நேரத்தில் ஒரே சேகரிப்பில் ஒரு தனித்துவமான கலவை குறியீட்டை உருவாக்கலாம். பின்வரும் வினவல் மூலம் இதை அடைகிறோம்:

db.candidates.createIndex( {பெயர்: 1 , தரம்: 1 , நிச்சயமாக: 1 }, {தனித்துவம்: உண்மை }

'வேட்பாளர்கள்' சேகரிப்புக்கான கூட்டு தனித்துவமான குறியீட்டை உருவாக்க, createIndex() முறையை மீண்டும் பயன்படுத்துகிறோம். இந்த நேரத்தில், நாங்கள் மூன்று புலங்களை கடந்து செல்கிறோம் - 'கிரேடு', 'பெயர்' மற்றும் 'கோர்ஸ்' - இது 'வேட்பாளர்கள்' சேகரிப்புக்கான ஏறுவரிசை குறியீட்டு புலங்களாக செயல்படுகிறது. அடுத்து, அந்த விருப்பத்திற்கு எதிராக 'உண்மை' ஒதுக்கப்பட்டுள்ளதால் புலத்தை தனித்துவமாக்க 'தனித்துவம்' விருப்பத்தை அழைக்கிறோம்.

மூன்று புலங்களும் இப்போது குறிப்பிட்ட சேகரிப்பின் தனிப்பட்ட குறியீடாக இருப்பதைக் காட்டும் முடிவுகளை வெளியீடு காட்டுகிறது:

எடுத்துக்காட்டு 4: நகல் புல மதிப்புகளின் தனித்துவமான குறியீட்டை உருவாக்கவும்

இப்போது, ​​நகல் புல மதிப்பிற்கான தனித்துவமான குறியீட்டை உருவாக்க முயற்சிக்கிறோம், இது தனித்துவக் கட்டுப்பாட்டைப் பராமரிக்க பிழையைத் தூண்டுகிறது.

db.candidates.createIndex({பெயர்: 1 },{தனித்துவம்: உண்மை})

இங்கே, ஒரே மாதிரியான மதிப்புகளைக் கொண்ட புலத்திற்கான தனிப்பட்ட குறியீட்டு அளவுகோலைப் பயன்படுத்துகிறோம். createIndex() முறையின் உள்ளே, 'பெயர்' புலத்தை '1' மதிப்புடன் அழைக்கிறோம், அதை ஒரு தனித்துவமான குறியீடாக மாற்றுவோம் மற்றும் தனிப்பட்ட விருப்பத்தை 'உண்மை' மதிப்புடன் வரையறுக்கிறோம். இரண்டு ஆவணங்களும் ஒரே மாதிரியான மதிப்புகளைக் கொண்ட “பெயர்” புலத்தைக் கொண்டிருப்பதால், இந்தப் புலத்தை “வேட்பாளர்கள்” சேகரிப்பின் தனித்துவமான குறியீட்டாக மாற்ற முடியாது. வினவலைச் செயல்படுத்தும்போது நகல் விசைப் பிழை தூண்டப்படுகிறது.

எதிர்பார்த்தபடி, வெளியீடு முடிவுகளை உருவாக்குகிறது, ஏனெனில் பெயர் புலம் இரண்டு வெவ்வேறு ஆவணங்களுக்கு ஒரே மதிப்புகளைக் கொண்டுள்ளது:

எனவே, ஆவணத்தில் உள்ள ஒவ்வொரு 'பெயர்' புலத்திற்கும் ஒரு தனிப்பட்ட மதிப்பை வழங்குவதன் மூலம் 'வேட்பாளர்கள்' சேகரிப்பை நாங்கள் புதுப்பித்து, பின்னர் 'பெயர்' புலத்தை தனிப்பட்ட குறியீட்டாக உருவாக்குகிறோம். அந்த வினவலை இயக்குவது பொதுவாக 'பெயர்' புலத்தை பின்வருவனவற்றில் காட்டப்பட்டுள்ளபடி தனித்துவமான குறியீடாக உருவாக்குகிறது:

எடுத்துக்காட்டு 5: விடுபட்ட புலத்தின் தனித்துவமான குறியீட்டை உருவாக்கவும்

மாற்றாக, சேகரிப்பின் எந்த ஆவணத்திலும் இல்லாத createIndex() முறையை களத்தில் பயன்படுத்துவோம். இதன் விளைவாக, குறியீட்டு அந்த புலத்திற்கு எதிராக ஒரு பூஜ்ய மதிப்பை சேமிக்கிறது, மேலும் புலத்தின் மதிப்பிற்கு எதிரான மீறல் காரணமாக செயல்பாடு தோல்வியடைகிறது.

db.candidates.createIndex( { மின்னஞ்சல்: 1 }, {தனித்துவம்: உண்மை } )

இங்கே, 'மின்னஞ்சல்' புலம் '1' மதிப்புடன் வழங்கப்படும் createIndex() முறையைப் பயன்படுத்துகிறோம். 'வேட்பாளர்கள்' சேகரிப்பில் 'மின்னஞ்சல்' புலம் இல்லை, மேலும் தனிப்பட்ட விருப்பத்தை 'உண்மை' என அமைப்பதன் மூலம் 'வேட்பாளர்கள்' சேகரிப்புக்கான தனித்துவமான குறியீட்டாக மாற்ற முயற்சிக்கிறோம்.

இதற்கான வினவல் செயல்படுத்தப்படும் போது, ​​'வேட்பாளர்கள்' சேகரிப்பில் 'மின்னஞ்சல்' புலம் இல்லாததால், வெளியீட்டில் பிழையைப் பெறுகிறோம்:

எடுத்துக்காட்டு 6: ஒரு புலத்தின் தனித்துவமான குறியீட்டை ஒரு சிறிய விருப்பத்துடன் உருவாக்கவும்

அடுத்து, தனித்துவ குறியீட்டை அரிதான விருப்பத்துடன் உருவாக்கலாம். ஒரு ஸ்பேர்ஸ் இன்டெக்ஸின் செயல்பாடு என்னவென்றால், குறியீட்டு புலம் இல்லாத ஆவணங்களைத் தவிர்த்து, குறியீட்டு புலத்தைக் கொண்ட ஆவணங்களை மட்டுமே உள்ளடக்கியது. ஸ்பேர்ஸ் விருப்பத்தை அமைப்பதற்கு பின்வரும் கட்டமைப்பை வழங்கியுள்ளோம்:

db.candidates.createIndex( { பாடநெறி : 1 },

{பெயர்: 'unique_sparse_course_index' , தனித்துவமானது: உண்மை, அரிதானது: உண்மை })

இங்கே, 'course' புலம் '1' மதிப்புடன் அமைக்கப்படும் createIndex() முறையை நாங்கள் வழங்குகிறோம். அதன் பிறகு, 'பாடநெறி' என்ற தனித்துவமான குறியீட்டு புலத்தை அமைப்பதற்கான கூடுதல் விருப்பத்தை நாங்கள் குறிப்பிடுகிறோம். விருப்பங்களில் 'unique_sparse_course_index' குறியீட்டை அமைக்கும் 'பெயர்' அடங்கும். பின்னர், எங்களிடம் 'தனித்துவமான' விருப்பம் உள்ளது, இது 'உண்மை' மதிப்புடன் குறிப்பிடப்பட்டுள்ளது மற்றும் 'ஸ்பேஸ்' விருப்பமும் 'உண்மை' என அமைக்கப்பட்டுள்ளது.

பின்வருவனவற்றில் காட்டப்பட்டுள்ளபடி வெளியீடு 'பாடநெறி' புலத்தில் ஒரு தனித்துவமான மற்றும் அரிதான குறியீட்டை உருவாக்குகிறது:

எடுத்துக்காட்டு 7: GetIndexes() முறையைப் பயன்படுத்தி உருவாக்கப்பட்ட தனித்துவமான குறியீட்டைக் காட்டு

முந்தைய எடுத்துக்காட்டில், வழங்கப்பட்ட சேகரிப்புக்கு ஒரு தனிப்பட்ட குறியீடு மட்டுமே உருவாக்கப்பட்டது. 'வேட்பாளர்கள்' சேகரிப்புக்கான தனிப்பட்ட குறியீடுகள் பற்றிய தகவலைப் பார்க்கவும் பெறவும், பின்வரும் getIndexes() முறையைப் பயன்படுத்துகிறோம்:

db.candidates.getIndexes();

இங்கே, 'கேண்டிடேட்ஸ்' சேகரிப்பில் உள்ள getIndexes() செயல்பாட்டை அழைக்கிறோம். getIndexes() செயல்பாடு முந்தைய எடுத்துக்காட்டுகளில் நாம் உருவாக்கிய 'கேண்டிடேட்ஸ்' சேகரிப்புக்கான அனைத்து குறியீட்டு புலங்களையும் வழங்குகிறது.

சேகரிப்புக்காக நாங்கள் உருவாக்கிய தனித்துவமான குறியீட்டை வெளியீடு காட்டுகிறது: தனித்துவமான குறியீட்டு, கூட்டு குறியீட்டு அல்லது தனித்துவமான ஸ்பார்ஸ் இன்டெக்ஸ்:

முடிவுரை

சேகரிப்பின் குறிப்பிட்ட புலங்களுக்கான தனித்துவமான குறியீட்டை உருவாக்க முயற்சித்தோம். ஒரு புலம் மற்றும் பல புலங்களுக்கான தனித்துவமான குறியீட்டை உருவாக்குவதற்கான பல்வேறு வழிகளை நாங்கள் ஆராய்ந்தோம். தனிப்பட்ட கட்டுப்பாடு மீறல் காரணமாக செயல்பாடு தோல்வியடையும் ஒரு தனித்துவமான குறியீட்டை உருவாக்க முயற்சித்தோம்.