كيفية إنشاء فهرس فريد في MongoDB

Kyfyt Ansha Fhrs Fryd Fy Mongodb



في MongoDB، يضمن الفهرس الفريد أن تكون كل قيمة في حقل معين أو مجموعة حقول معينة داخل المجموعة فريدة من نوعها. باستخدام طريقة createIndex()، يمكننا إنشاء حقل فهرس فريد لمجموعة معينة. لغرض الحفاظ على سلامة البيانات وتجنب الإدخالات المكررة في المجالات الحيوية، تكون الفهارس الفريدة مفيدة. تناولت المقالة طرق إنشاء فهرس فريد للمجموعة المحددة. db.candidates.insertMany([

{ اسم: 'أليكسا بيل' ، درجة: 'أ' ، دورة: 'بيثون' },

{ اسم: 'جين ماركس' ، درجة: 'ب' ، دورة: 'جافا' },

{ اسم: 'بول كين' ، درجة: 'ج' ، دورة: 'ج#' },

{ اسم: 'إميلي جيو' ، درجة: 'د' ، دورة: 'بي أتش بي' }

]);

يمكننا أيضًا إنشاء حقل فهرس فريد عندما تكون المجموعة موجودة مع بعض المستندات بداخلها. ولهذا السبب، نقوم بإدراج المستند في المجموعة الجديدة وهي 'المرشحون' والتي يتم الاستعلام عن الإدراج عليها على النحو التالي:







المثال 1: إنشاء فهرس فريد لحقل واحد

يمكننا إنشاء الفهرس باستخدام طريقة createIndex() ويمكننا أن نجعل هذا الحقل فريدًا عن طريق تحديد الخيار الفريد باستخدام القيمة المنطقية 'true'.



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: إنشاء فهرس فريد لحقل مفقود

وبدلاً من ذلك، نقوم بتطبيق طريقة createIndex() على الحقل غير الموجود في أي من مستندات المجموعة. ونتيجة لذلك، يقوم الفهرس بتخزين قيمة فارغة مقابل هذا الحقل، وتفشل العملية بسبب انتهاك قيمة الحقل.

db.candidates.createIndex( { البريد الإلكتروني: 1 }, { فريد: صحيح } )

هنا، نستخدم طريقة createIndex() حيث يتم تزويد حقل 'البريد الإلكتروني' بالقيمة '1'. حقل 'البريد الإلكتروني' غير موجود في مجموعة 'المرشحين' ونحاول أن نجعله فهرسًا فريدًا لمجموعة 'المرشحين' عن طريق ضبط الخيار الفريد على 'صحيح'.

عند تنفيذ الاستعلام، نحصل على الخطأ في الإخراج حيث أن حقل 'البريد الإلكتروني' مفقود في مجموعة 'المرشحين':

المثال 6: إنشاء فهرس فريد لحقل يحتوي على خيار متفرق

بعد ذلك، يمكن أيضًا إنشاء الفهرس الفريد باستخدام الخيار المتناثر. وظيفة الفهرس المتفرق هي أنه يتضمن فقط المستندات التي تحتوي على الحقل المفهرس، باستثناء المستندات التي لا تحتوي على الحقل المفهرس. لقد قدمنا ​​البنية التالية لإعداد الخيار المتناثر:

db.candidates.createIndex( { الدورة : 1 },

{ اسم: 'unique_sparse_course_index' ، فريد: صحيح، متفرق: صحيح } )

نقدم هنا طريقة createIndex() حيث يتم تعيين حقل 'الدورة التدريبية' بالقيمة '1'. بعد ذلك نقوم بتحديد الخيار الإضافي لتعيين حقل فهرس فريد وهو “الدورة التدريبية”. تتضمن الخيارات 'الاسم' الذي يقوم بتعيين فهرس 'unique_sparse_course_index'. بعد ذلك، لدينا الخيار 'الفريد' والذي تم تحديده بالقيمة 'صحيح' وتم ضبط الخيار 'المتفرق' أيضًا على 'صحيح'.

تقوم المخرجات بإنشاء فهرس فريد ومتفرق في حقل 'الدورة التدريبية' كما هو موضح في ما يلي:

المثال 7: إظهار الفهرس الفريد الذي تم إنشاؤه باستخدام طريقة GetIndexes()

في المثال السابق، تم إنشاء فهرس فريد فقط للمجموعة المتوفرة. لعرض المعلومات والحصول عليها حول الفهارس الفريدة لمجموعة 'المرشحين'، نستخدم طريقة getIndexes() التالية:

db.candidates.getIndexes();

هنا، نسمي الدالة getIndexes()‎ في مجموعة 'المرشحين'. تقوم الدالة getIndexes() بإرجاع جميع حقول الفهرس لمجموعة 'المرشحين' التي أنشأناها في الأمثلة السابقة.

يعرض الإخراج الفهرس الفريد الذي أنشأناه للمجموعة: إما فهرس فريد، أو فهرس مركب، أو فهرس متفرق فريد:

خاتمة

لقد حاولنا إنشاء فهرس فريد للحقول المحددة بالمجموعة. لقد استكشفنا الطرق المختلفة لإنشاء فهرس فريد لحقل واحد وحقول متعددة. لقد حاولنا أيضًا إنشاء فهرس فريد حيث تفشل العملية بسبب انتهاك قيد فريد.