כיצד ליצור אינדקס ייחודי ב- MongoDB

Kyzd Lyzwr Yndqs Yyhwdy B Mongodb



ב-MongoDB, אינדקס ייחודי מבטיח שכל ערך בשדה מסוים או בקבוצת שדות בתוך אוסף הוא ייחודי. באמצעות שיטת createIndex() נוכל ליצור שדה אינדקס ייחודי עבור האוסף הספציפי. לצורך שמירה על שלמות הנתונים והימנעות מכניסות כפולות בתחומים חיוניים, אינדקסים ייחודיים מועילים. המאמר סיקר את הדרכים ליצירת אינדקס ייחודי לקולקציה הספציפית. db.candidates.insertMany([

{ שם: 'אלכסה ביל' , כיתה: 'א' , כמובן: 'פִּיתוֹן' },

{ שם: 'ג'יין מרקס' , כיתה: 'ב' , כמובן: 'ג'אווה' },

{ שם: 'פול קן' , כיתה: 'ג' , כמובן: '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() כדי ליצור את האינדקס הייחודי המורכב עבור אוסף 'מועמדים'. הפעם אנו עוברים שלושה שדות - 'ציון', 'שם' ו'קורס' - המשמשים כשדות האינדקס העולה לאוסף 'מועמדים'. לאחר מכן, אנו קוראים לאפשרות 'ייחודית' כדי להפוך את השדה לייחודי שכן 'נכון' מוקצה כנגד אפשרות זו.

הפלט מציג את התוצאות המראות שכל שלושת השדות הם כעת האינדקס הייחודי של האוסף שצוין:

דוגמה 4: צור אינדקס ייחודי של ערכי שדות כפולים

כעת, אנו מנסים ליצור את האינדקס הייחודי עבור ערך השדה הכפול אשר מפעיל שגיאה כדי לשמור על אילוץ הייחודיות.

db.candidates.createIndex({שם: 1 },{unique:true})

כאן, אנו מיישמים את קריטריוני האינדקס הייחודיים עבור השדה המכיל ערכים דומים. בתוך שיטת createIndex() אנו קוראים לשדה 'שם' עם הערך '1' כדי להפוך אותו לאינדקס ייחודי ולהגדיר את האפשרות הייחודית עם הערך 'true'. מכיוון שלשני המסמכים יש את השדה 'שם' עם ערכים זהים, איננו יכולים להפוך את השדה הזה לאינדקס ייחודי של אוסף ה'מועמדים'. שגיאת המפתח הכפול מופעלת עם ביצוע השאילתה.

כצפוי, הפלט מייצר את התוצאות מכיוון שלשדה השם יש אותם ערכים עבור שני מסמכים שונים:

לפיכך, אנו מעדכנים את אוסף ה'מועמדים' על ידי מתן ערך ייחודי לכל שדה 'שם' במסמך ולאחר מכן יוצרים את שדה ה'שם' כאינדקס הייחודי. ביצוע שאילתה זו יוצרת בדרך כלל את השדה 'שם' בתור האינדקס הייחודי, כפי שמוצג להלן:

דוגמה 5: צור אינדקס ייחודי של שדה חסר

לחלופין, אנו מיישמים את שיטת createIndex() על השדה שלא קיים באף אחד מהמסמכים של האוסף. כתוצאה מכך, האינדקס מאחסן ערך null כנגד אותו שדה, והפעולה נכשלת עקב הפרה של ערך השדה.

db.candidates.createIndex( { אימייל: 1 }, { ייחודי: אמיתי } )

כאן, אנו משתמשים בשיטת createIndex() שבה השדה 'email' מסופק עם הערך של '1'. השדה 'אימייל' לא קיים באוסף 'מועמדים' ואנו מנסים להפוך אותו לאינדקס ייחודי לאוסף 'מועמדים' על ידי הגדרת האפשרות הייחודית ל'נכון'.

כאשר השאילתה עבור זה מבוצעת, אנו מקבלים את השגיאה בפלט מכיוון ששדה 'אימייל' חסר באוסף 'מועמדים':

דוגמה 6: צור אינדקס ייחודי של שדה עם אפשרות דלילה

לאחר מכן, ניתן ליצור את האינדקס הייחודי גם עם האפשרות הדלילה. הפונקציונליות של אינדקס דליל היא שהוא כולל רק מסמכים שיש להם את השדה המאונדקס, למעט המסמכים שאין להם את השדה המאונדקס. סיפקנו את המבנה הבא כדי להגדיר את האפשרות הדלילה:

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

{ שם: 'אינדקס_קורס_יחיד_דל' , ייחודי: נכון, דליל: נכון } )

כאן, אנו מספקים את שיטת createIndex() שבה השדה 'קורס' מוגדר עם הערך של '1'. לאחר מכן, אנו מציינים את האפשרות הנוספת להגדיר שדה אינדקס ייחודי שהוא 'קורס'. האפשרויות כוללות את ה'שם' שקובע את אינדקס ה-'unique_sparse_course_index'. לאחר מכן, יש לנו את האפשרות 'ייחודי' שצוינה עם הערך 'אמיתי' והאפשרות 'דלה' מוגדרת גם היא ל'אמת'.

הפלט יוצר אינדקס ייחודי ודליל בשדה 'קורס' כפי שמוצג להלן:

דוגמה 7: הצג את האינדקס הייחודי שנוצר באמצעות שיטת GetIndex()

בדוגמה הקודמת, נוצר רק אינדקס ייחודי עבור האוסף שסופק. כדי להציג ולקבל את המידע על האינדקסים הייחודיים לאוסף 'מועמדים', אנו משתמשים בשיטת getIndex() הבאה:

db.candidates.getIndex();

כאן אנו קוראים לפונקציה getIndex() באוסף 'מועמדים'. הפונקציה getIndex() מחזירה את כל שדות האינדקס עבור אוסף 'מועמדים' שיצרנו בדוגמאות הקודמות.

הפלט מציג את האינדקס הייחודי שיצרנו עבור האוסף: או אינדקס ייחודי, אינדקס מורכב או האינדקס הדליל הייחודי:

סיכום

ניסינו ליצור אינדקס ייחודי לתחומים הספציפיים של האוסף. בדקנו את הדרכים השונות ליצור אינדקס ייחודי לשדה בודד ולמספר שדות. ניסינו גם ליצור אינדקס ייחודי שבו הפעולה נכשלת עקב הפרת אילוץ ייחודית.