MongoDB میں ایک منفرد انڈیکس کیسے بنایا جائے۔

Mongodb My Ayk Mnfrd An Yks Kys Bnaya Jay



MongoDB میں، ایک منفرد انڈیکس اس بات کو یقینی بناتا ہے کہ کسی خاص فیلڈ یا مجموعہ کے اندر موجود فیلڈز کے گروپ میں ہر قدر منفرد ہو۔ createIndex() طریقہ استعمال کرتے ہوئے، ہم مخصوص مجموعہ کے لیے ایک منفرد انڈیکس فیلڈ بنا سکتے ہیں۔ ڈیٹا کی سالمیت کو برقرار رکھنے اور اہم شعبوں میں ڈپلیکیٹ اندراجات سے بچنے کے مقصد کے لیے، منفرد اشاریہ جات مددگار ہیں۔ مضمون میں مخصوص مجموعہ کے لیے ایک منفرد انڈیکس بنانے کے طریقوں کا احاطہ کیا گیا ہے۔ db.candidates.insertMany([

{نام: 'الیکسا بل' گریڈ: 'ا' کورس: 'ازگر'

{نام: 'جین مارکس' گریڈ: 'B' کورس: 'جاوا'

{نام: 'پال کین' گریڈ: 'سی' کورس: 'C#'

{نام: 'ایملی جیو' گریڈ: 'ڈی' کورس: 'php' }

]);

جب مجموعہ اس کے اندر کچھ دستاویزات کے ساتھ موجود ہو تو ہم ایک منفرد انڈیکس فیلڈ بھی بنا سکتے ہیں۔ اس کے لیے، ہم دستاویز کو نئے مجموعہ میں داخل کرتے ہیں جو کہ 'امیدوار' ہے جن کے اندراج کے لیے استفسار درج ذیل ہے:







مثال 1: ایک فیلڈ کا منفرد انڈیکس بنائیں

ہم createIndex() طریقہ استعمال کرکے انڈیکس بنا سکتے ہیں اور ہم بولین 'true' کے ساتھ منفرد آپشن کی وضاحت کر کے اس فیلڈ کو منفرد بنا سکتے ہیں۔



db.candidates.createIndex ( { گریڈ: 1 }، { منفرد: سچ } )

یہاں، ہم ایک مخصوص فیلڈ کا منفرد انڈیکس بنانے کے لیے 'امیدواروں' کے مجموعہ پر createIndex() طریقہ شروع کرتے ہیں۔ پھر، ہم انڈیکس کی تفصیلات کے لیے '1' کی قدر کے ساتھ 'گریڈ' فیلڈ فراہم کرتے ہیں۔ یہاں '1' کی قدر مجموعہ کے بڑھتے ہوئے اشاریہ کی نمائندگی کرتی ہے۔ اگلا، ہم فیلڈ 'گریڈ' کی انفرادیت کو نافذ کرنے کے لیے 'ٹرو' ویلیو کے ساتھ 'منفرد' آپشن کی وضاحت کرتے ہیں۔



آؤٹ پٹ اس بات کی نمائندگی کرتا ہے کہ 'گریڈ' فیلڈ پر منفرد انڈیکس 'امیدواروں' کے مجموعہ کے لیے بنایا گیا ہے:





مثال 2: ایک سے زیادہ فیلڈ کا منفرد انڈیکس بنائیں

پچھلی مثال میں، صرف ایک فیلڈ کو منفرد انڈیکس کے طور پر بنایا گیا ہے۔ لیکن ہم createIndex() طریقہ استعمال کرتے ہوئے بیک وقت ایک منفرد انڈیکس کے طور پر دو فیلڈز بھی بنا سکتے ہیں۔



db.candidates.createIndex ( { گریڈ: 1 کورس: 1 }، { منفرد: سچ } )

یہاں، ہم اسی 'امیدواروں' کے مجموعہ پر createIndex() طریقہ کہتے ہیں۔ ہم createIndex() طریقہ کار میں دو فیلڈز بتاتے ہیں - 'گریڈ' اور 'کورس' - پہلے اظہار کے طور پر '1' کی قدر کے ساتھ۔ پھر، ہم ان دو منفرد فیلڈز کو بنانے کے لیے 'سچ' قدر کے ساتھ منفرد آپشن سیٹ کرتے ہیں۔

آؤٹ پٹ درج ذیل 'امیدواروں' کے مجموعہ کے لیے دو منفرد اشاریہ جات کی نمائندگی کرتا ہے، 'گریڈ_1' اور 'کورس_1':

مثال 3: فیلڈز کا ایک کمپاؤنڈ منفرد انڈیکس بنائیں

تاہم، ہم بیک وقت اسی مجموعہ میں ایک منفرد کمپاؤنڈ انڈیکس بھی بنا سکتے ہیں۔ ہم اسے درج ذیل استفسار کے ذریعے حاصل کرتے ہیں:

db.candidates.createIndex( { نام: 1 گریڈ: 1 کورس: 1 }، { منفرد: سچ }

ہم 'امیدواروں' کے مجموعہ کے لیے مرکب منفرد انڈیکس بنانے کے لیے دوبارہ createIndex() طریقہ استعمال کرتے ہیں۔ اس بار، ہم تین فیلڈز پاس کرتے ہیں - 'گریڈ'، 'نام' اور 'کورس' - جو 'امیدواروں' کے مجموعے کے لیے صعودی انڈیکس فیلڈز کے طور پر کام کرتے ہیں۔ اگلا، ہم فیلڈ کو منفرد بنانے کے لیے 'منفرد' آپشن کہتے ہیں کیونکہ اس آپشن کے خلاف 'true' تفویض کیا گیا ہے۔

آؤٹ پٹ نتائج دکھاتا ہے جس سے ظاہر ہوتا ہے کہ تینوں فیلڈز اب مخصوص مجموعہ کا منفرد انڈیکس ہیں:

مثال 4: ڈپلیکیٹ فیلڈ ویلیوز کا ایک منفرد انڈیکس بنائیں

اب، ہم ڈپلیکیٹ فیلڈ ویلیو کے لیے منفرد انڈیکس بنانے کی کوشش کرتے ہیں جو انفرادیت کی رکاوٹ کو برقرار رکھنے کے لیے ایک غلطی کو متحرک کرتا ہے۔

db.candidates.createIndex({name: 1 }،{unique:true})

یہاں، ہم اس فیلڈ کے لیے منفرد انڈیکس کے معیار کا اطلاق کرتے ہیں جس میں ایک جیسی اقدار ہوتی ہیں۔ CreateIndex() طریقہ کے اندر، ہم 'name' فیلڈ کو '1' کی قدر کے ساتھ کال کرتے ہیں تاکہ اسے ایک منفرد انڈیکس بنایا جا سکے اور 'true' ویلیو کے ساتھ منفرد آپشن کی وضاحت کی جا سکے۔ چونکہ دونوں دستاویزات میں 'نام' فیلڈ ایک جیسی اقدار کے ساتھ ہے، اس لیے ہم اس فیلڈ کو 'امیدواروں' کے مجموعہ کا منفرد انڈیکس نہیں بنا سکتے۔ استفسار پر عمل درآمد پر ڈپلیکیٹ کلید کی خرابی شروع ہو جاتی ہے۔

جیسا کہ توقع کی جاتی ہے، آؤٹ پٹ نتائج پیدا کرتا ہے کیونکہ نام کی فیلڈ میں دو مختلف دستاویزات کے لیے ایک جیسی اقدار ہیں:

اس طرح، ہم دستاویز میں ہر 'نام' فیلڈ کو ایک منفرد قدر دے کر 'امیدواروں' کے مجموعہ کو اپ ڈیٹ کرتے ہیں اور پھر 'نام' فیلڈ کو منفرد انڈیکس کے طور پر بناتے ہیں۔ اس استفسار پر عمل درآمد عام طور پر 'نام' فیلڈ کو منفرد انڈیکس کے طور پر بناتا ہے جیسا کہ درج ذیل میں دکھایا گیا ہے:

مثال 5: گمشدہ فیلڈ کا ایک منفرد انڈیکس بنائیں

متبادل طور پر، ہم اس فیلڈ پر createIndex() طریقہ لاگو کرتے ہیں جو مجموعہ کی کسی بھی دستاویز میں موجود نہیں ہے۔ نتیجے کے طور پر، انڈیکس اس فیلڈ کے خلاف ایک صفر قدر ذخیرہ کرتا ہے، اور فیلڈ کی قدر کے خلاف خلاف ورزی کی وجہ سے آپریشن ناکام ہو جاتا ہے۔

db.candidates.createIndex( { ای میل: 1 }، { منفرد: سچ } )

یہاں، ہم createIndex() طریقہ استعمال کرتے ہیں جہاں 'email' فیلڈ '1' کی قدر کے ساتھ فراہم کی جاتی ہے۔ 'امیدواروں' کے مجموعہ میں 'ای میل' فیلڈ موجود نہیں ہے اور ہم منفرد آپشن کو 'سچ' پر سیٹ کر کے اسے 'امیدواروں' کے مجموعہ کے لیے ایک منفرد انڈیکس بنانے کی کوشش کرتے ہیں۔

جب اس کے لیے استفسار کیا جاتا ہے، تو ہمیں آؤٹ پٹ میں خرابی ملتی ہے کیونکہ 'امیدوار' مجموعہ میں 'ای میل' فیلڈ غائب ہے:

مثال 6: اسپارس آپشن کے ساتھ فیلڈ کا انوکھا انڈیکس بنائیں

اس کے بعد، اسپارس آپشن کے ساتھ منفرد انڈیکس بھی بنایا جا سکتا ہے۔ اسپارس انڈیکس کی فعالیت یہ ہے کہ اس میں صرف وہ دستاویزات شامل ہوتی ہیں جن میں انڈیکسڈ فیلڈ ہوتی ہے، ان دستاویزات کو چھوڑ کر جن میں انڈیکسڈ فیلڈ نہیں ہوتی ہے۔ ہم نے اسپارس آپشن کو سیٹ اپ کرنے کے لیے درج ذیل ڈھانچہ فراہم کیا:

db.candidates.createIndex ( { کورس : 1

{نام: 'منفرد_اسپارس_کورس_انڈیکس' , منفرد: سچا، ویرل: سچ } )

یہاں، ہم createIndex() طریقہ فراہم کرتے ہیں جہاں 'کورس' فیلڈ کو '1' کی قدر کے ساتھ سیٹ کیا جاتا ہے۔ اس کے بعد، ہم ایک منفرد انڈیکس فیلڈ سیٹ کرنے کے لیے اضافی آپشن کی وضاحت کرتے ہیں جو کہ 'کورس' ہے۔ اختیارات میں 'نام' شامل ہے جو 'منفرد_sparse_course_index' انڈیکس کو سیٹ کرتا ہے۔ پھر، ہمارے پاس 'منفرد' آپشن ہے جو 'true' ویلیو کے ساتھ مخصوص کیا گیا ہے اور 'sparse' آپشن بھی 'true' پر سیٹ ہے۔

آؤٹ پٹ 'کورس' فیلڈ پر ایک منفرد اور ویرل انڈیکس بناتا ہے جیسا کہ درج ذیل میں دکھایا گیا ہے:

مثال 7: GetIndexes() طریقہ استعمال کرتے ہوئے تخلیق کردہ منفرد انڈیکس دکھائیں۔

پچھلی مثال میں، فراہم کردہ مجموعہ کے لیے صرف ایک منفرد انڈیکس بنایا گیا تھا۔ 'امیدواروں' کے مجموعہ کے لیے منفرد اشاریہ جات کو دیکھنے اور حاصل کرنے کے لیے، ہم درج ذیل getIndexes() طریقہ استعمال کرتے ہیں:

db.candidates.getIndexes();

یہاں، ہم 'امیدواروں' کے مجموعہ پر getIndexes() فنکشن کہتے ہیں۔ getIndexes() فنکشن 'امیدواروں' کے مجموعہ کے لیے تمام انڈیکس فیلڈز واپس کرتا ہے جو ہم نے پچھلی مثالوں میں تخلیق کیے تھے۔

آؤٹ پٹ منفرد انڈیکس دکھاتا ہے جسے ہم نے مجموعہ کے لیے بنایا تھا: یا تو ایک منفرد انڈیکس، کمپاؤنڈ انڈیکس، یا منفرد اسپارس انڈیکس:

نتیجہ

ہم نے مجموعہ کے مخصوص شعبوں کے لیے ایک منفرد انڈیکس بنانے کی کوشش کی۔ ہم نے ایک فیلڈ اور متعدد فیلڈز کے لیے ایک منفرد انڈیکس بنانے کے مختلف طریقے تلاش کیے ہیں۔ ہم نے ایک منفرد انڈیکس بنانے کی بھی کوشش کی جہاں ایک منفرد رکاوٹ کی خلاف ورزی کی وجہ سے آپریشن ناکام ہو جاتا ہے۔