మొంగోడిబిలో ప్రత్యేక సూచికను ఎలా సృష్టించాలి

Mongodibilo Pratyeka Sucikanu Ela Srstincali



MongoDBలో, ఒక నిర్దిష్ట ఫీల్డ్ లేదా సేకరణలోని ఫీల్డ్‌ల సమూహంలోని ప్రతి విలువ ప్రత్యేకంగా ఉండేలా ప్రత్యేక సూచిక నిర్ధారిస్తుంది. createIndex() పద్ధతిని ఉపయోగించి, మేము నిర్దిష్ట సేకరణ కోసం ప్రత్యేక సూచిక ఫీల్డ్‌ను తయారు చేయవచ్చు. డేటా సమగ్రతను కాపాడుకోవడానికి మరియు కీలకమైన ఫీల్డ్‌లలో నకిలీ ఎంట్రీలను నివారించడానికి, ప్రత్యేక సూచికలు సహాయపడతాయి. నిర్దిష్ట సేకరణ కోసం ప్రత్యేక సూచికను సృష్టించే మార్గాలను వ్యాసం కవర్ చేసింది. db.candidates.insertMany([

{పేరు: 'అలెక్సా బిల్' , గ్రేడ్: 'ఎ' , కోర్సు: 'కొండచిలువ' },

{పేరు: 'జేన్ మార్క్స్' , గ్రేడ్: 'బి' , కోర్సు: 'జావా' },

{పేరు: 'పాల్ కెన్' , గ్రేడ్: 'సి' , కోర్సు: 'సి#' },

{పేరు: 'ఎమిలీ జియో' , గ్రేడ్: 'డి' , కోర్సు: 'php' }

]);

సేకరణలో కొన్ని డాక్యుమెంట్‌లు ఉన్నప్పుడు మేము ప్రత్యేకమైన ఇండెక్స్ ఫీల్డ్‌ను కూడా సృష్టించవచ్చు. దీని కోసం, మేము 'అభ్యర్థులు' అనే కొత్త సేకరణలో పత్రాన్ని చొప్పిస్తాము, దీని చొప్పించడం కోసం ప్రశ్న క్రింది విధంగా ఇవ్వబడింది:







ఉదాహరణ 1: ఒకే ఫీల్డ్ యొక్క ప్రత్యేక సూచికను సృష్టించండి

మేము createIndex() పద్ధతిని ఉపయోగించి సూచికను సృష్టించవచ్చు మరియు బూలియన్ “ట్రూ”తో ప్రత్యేకమైన ఎంపికను పేర్కొనడం ద్వారా మేము ఆ ఫీల్డ్‌ను ప్రత్యేకంగా చేయవచ్చు.



db.candidates.createIndex( {గ్రేడ్: 1 }, {ప్రత్యేకమైనది: నిజం } )

ఇక్కడ, మేము నిర్దిష్ట ఫీల్డ్ యొక్క ప్రత్యేక సూచికను సృష్టించడానికి “అభ్యర్థుల” సేకరణలో createIndex() పద్ధతిని ప్రారంభిస్తాము. అప్పుడు, మేము ఇండెక్స్ స్పెసిఫికేషన్ కోసం '1' విలువతో 'గ్రేడ్' ఫీల్డ్‌ను అందిస్తాము. ఇక్కడ '1' విలువ సేకరణ యొక్క ఆరోహణ సూచికను సూచిస్తుంది. తరువాత, ఫీల్డ్ 'గ్రేడ్' యొక్క ప్రత్యేకతను అమలు చేయడానికి 'నిజమైన' విలువతో 'ప్రత్యేకమైన' ఎంపికను మేము నిర్దేశిస్తాము.



అవుట్‌పుట్ 'గ్రేడ్' ఫీల్డ్‌లోని ప్రత్యేక సూచిక 'అభ్యర్థుల' సేకరణ కోసం సృష్టించబడిందని సూచిస్తుంది:





ఉదాహరణ 2: ఒకటి కంటే ఎక్కువ ఫీల్డ్‌ల ప్రత్యేక సూచికను సృష్టించండి

మునుపటి ఉదాహరణలో, ఒకే ఫీల్డ్ మాత్రమే ప్రత్యేక సూచికగా సృష్టించబడుతుంది. కానీ మనం createIndex() పద్ధతిని ఉపయోగించి ఏకకాలంలో రెండు ఫీల్డ్‌లను ప్రత్యేక సూచికగా కూడా సృష్టించవచ్చు.



db.candidates.createIndex( {గ్రేడ్: 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: తప్పిపోయిన ఫీల్డ్ యొక్క ప్రత్యేక సూచికను సృష్టించండి

ప్రత్యామ్నాయంగా, మేము సేకరణ యొక్క ఏ డాక్యుమెంట్‌లోనూ లేని క్రియేట్‌ఇండెక్స్() పద్ధతిని ఫీల్డ్‌లో వర్తింపజేస్తాము. ఫలితంగా, ఇండెక్స్ ఆ ఫీల్డ్‌కు వ్యతిరేకంగా శూన్య విలువను నిల్వ చేస్తుంది మరియు ఫీల్డ్ విలువకు వ్యతిరేకంగా ఉల్లంఘన కారణంగా ఆపరేషన్ విఫలమవుతుంది.

db.candidates.createIndex( { ఇమెయిల్: 1 }, {ప్రత్యేకమైనది: నిజం } )

ఇక్కడ, మేము 'ఇమెయిల్' ఫీల్డ్ '1' విలువతో అందించబడిన createIndex() పద్ధతిని ఉపయోగిస్తాము. 'ఇమెయిల్' ఫీల్డ్ 'అభ్యర్థుల' సేకరణలో లేదు మరియు మేము దానిని 'అభ్యర్థుల' సేకరణ కోసం ప్రత్యేక సూచికగా 'నిజం'కి సెట్ చేయడం ద్వారా ప్రత్యేక సూచికగా చేయడానికి ప్రయత్నిస్తాము.

దీని కోసం ప్రశ్న అమలు చేయబడినప్పుడు, 'అభ్యర్థుల' సేకరణలో 'ఇమెయిల్' ఫీల్డ్ తప్పిపోయినందున మేము అవుట్‌పుట్‌లో ఎర్రర్‌ను పొందుతాము:

ఉదాహరణ 6: ఒక ఖాళీ ఎంపికతో ఫీల్డ్ యొక్క ప్రత్యేక సూచికను సృష్టించండి

తరువాత, ప్రత్యేకమైన సూచికను స్పేర్స్ ఎంపికతో కూడా సృష్టించవచ్చు. స్పేర్స్ ఇండెక్స్ యొక్క కార్యాచరణ ఏమిటంటే అది ఇండెక్స్ చేయబడిన ఫీల్డ్ లేని పత్రాలను మినహాయించి, ఇండెక్స్ చేయబడిన ఫీల్డ్‌ను కలిగి ఉన్న పత్రాలను మాత్రమే కలిగి ఉంటుంది. స్పేర్స్ ఎంపికను సెటప్ చేయడానికి మేము క్రింది నిర్మాణాన్ని అందించాము:

db.candidates.createIndex( {course : 1 },

{పేరు: 'unique_sparse_course_index' , ఏకైక: నిజం, అరుదుగా: నిజం })

ఇక్కడ, మేము 'కోర్సు' ఫీల్డ్ '1' విలువతో సెట్ చేయబడిన క్రియేట్ఇండెక్స్() పద్ధతిని అందిస్తాము. ఆ తర్వాత, మేము 'కోర్సు' అనే ప్రత్యేకమైన ఇండెక్స్ ఫీల్డ్‌ను సెట్ చేయడానికి అదనపు ఎంపికను నిర్దేశిస్తాము. ఎంపికలలో 'పేరు' ఉంటుంది, ఇది 'unique_sparse_course_index' సూచికను సెట్ చేస్తుంది. అప్పుడు, మనకు “నిజం” విలువతో పేర్కొనబడిన “ప్రత్యేక” ఎంపిక ఉంది మరియు “స్పేర్స్” ఎంపిక కూడా “నిజం”కి సెట్ చేయబడింది.

అవుట్‌పుట్ కింది వాటిలో చూపిన విధంగా “కోర్సు” ఫీల్డ్‌లో ప్రత్యేకమైన మరియు అరుదైన సూచికను సృష్టిస్తుంది:

ఉదాహరణ 7: GetIndexes() పద్ధతిని ఉపయోగించి సృష్టించబడిన ప్రత్యేక సూచికను చూపండి

మునుపటి ఉదాహరణలో, అందించిన సేకరణ కోసం ప్రత్యేకమైన సూచిక మాత్రమే సృష్టించబడింది. “అభ్యర్థుల” సేకరణ కోసం ప్రత్యేక సూచికలను వీక్షించడానికి మరియు సమాచారాన్ని పొందడానికి, మేము క్రింది getIndexes() పద్ధతిని ఉపయోగిస్తాము:

db.candidates.getIndexes();

ఇక్కడ, మేము 'అభ్యర్థుల' సేకరణలో getIndexes() ఫంక్షన్‌ని పిలుస్తాము. getIndexes() ఫంక్షన్ మేము మునుపటి ఉదాహరణలలో సృష్టించిన “అభ్యర్థుల” సేకరణ కోసం అన్ని ఇండెక్స్ ఫీల్డ్‌లను అందిస్తుంది.

అవుట్‌పుట్ మేము సేకరణ కోసం సృష్టించిన ప్రత్యేక సూచికను ప్రదర్శిస్తుంది: ప్రత్యేకమైన సూచిక, సమ్మేళనం సూచిక లేదా ప్రత్యేక స్పేర్స్ ఇండెక్స్:

ముగింపు

మేము సేకరణ యొక్క నిర్దిష్ట ఫీల్డ్‌ల కోసం ప్రత్యేక సూచికను రూపొందించడానికి ప్రయత్నించాము. మేము ఒకే ఫీల్డ్ మరియు బహుళ ఫీల్డ్‌ల కోసం ప్రత్యేకమైన సూచికను రూపొందించడానికి వివిధ మార్గాలను అన్వేషించాము. ప్రత్యేకమైన పరిమితి ఉల్లంఘన కారణంగా ఆపరేషన్ విఫలమయ్యే ప్రత్యేక సూచికను రూపొందించడానికి కూడా మేము ప్రయత్నించాము.