MongoDB الفهرسة: إنشاء الفهرس() وحذف الفهرس()
⚡ ملخص ذكي
MongoDB تُخزّن الفهارس مجموعة فرعية مُرتبة من حقول المجموعة، مما يُتيح للاستعلامات تحديد موقع المستندات دون الحاجة إلى فحص كل سجل. تقوم طرق createIndex و getIndexes و dropIndex بإنشاء هذه الهياكل بالغة الأهمية للأداء، وعرضها، وإزالتها.

ما هي MongoDB الفهارس؟
الفهارس مهمة جدًا في أي قاعدة بيانات، ومع MongoDB الأمر لا يختلف. باستخدام الفهارس، يتم تنفيذ الاستعلامات في MongoDB يصبح أكثر كفاءة.
إذا كان لديك مجموعة تضم آلاف المستندات بدون فهارس، ثم قمت بالاستعلام للعثور على مستندات معينة، ففي مثل هذه الحالة MongoDB سوف تحتاج إلى مسح المجموعة بأكملها للعثور على المستندات. ولكن إذا كان لديك فهارس، MongoDB سوف تستخدم هذه الفهارس للحد من عدد الوثائق التي يجب البحث فيها في المجموعة.
الفهارس عبارة عن مجموعات بيانات خاصة تخزن جزءًا من بيانات المجموعة. ولأن البيانات جزئية، يصبح من الأسهل قراءتها. تخزن هذه المجموعة الجزئية قيمة حقل معين، أو مجموعة من الحقول، مرتبة حسب قيمة ذلك الحقل.
فهم تأثير الفهارس
على الرغم من أن المقدمة قد أظهرت أن الفهارس مفيدة للاستعلامات، إلا أن وجود عدد كبير جدًا من الفهارس يمكن أن يبطئ العمليات الأخرى مثل عمليات الإدراج والحذف والتحديث.
إذا كانت هناك عمليات إدراج وحذف وتحديث متكررة يتم تنفيذها على المستندات، فإن الفهارس ستحتاج إلى التغيير بهذه الكثرة، وهو ما سيكون مجرد عبء إضافي على المجموعة.
يوضح المثال أدناه قيم الحقول التي يمكن أن تشكل فهرسًا في مجموعة بيانات. يمكن أن يستند الفهرس إما إلى حقل واحد فقط في المجموعة، أو إلى عدة حقول فيها.
في المثال أدناه، رقم الموظف "1" والموظفCode تُستخدم الفهارس "AA" لفهرسة المستندات في المجموعة. لذا، عند إجراء بحث استعلامي، ستُستخدم هذه الفهارس للعثور بسرعة وكفاءة على المستندات المطلوبة في المجموعة.
لذا حتى لو كان استعلام البحث يعتمد على الموظفCode "AA"، سيتم إرجاع تلك الوثيقة.
كيفية إنشاء الفهارس: createIndex()
إنشاء فهرس في MongoDB يتم باستخدام createIndex الأسلوب.
يوضح المثال التالي كيفية إضافة فهرس إلى مجموعة. لنفترض أن لدينا نفس مجموعة الموظفين، والتي تحتوي على اسمي الحقلين "Employeeid" و"EmployeeName".
db.Employee.createIndex({Employeeid:1})
Code التفسير:
- استخدم createIndex يتم استخدام الطريقة لإنشاء فهرس بناءً على "Employeeid" الخاص بالمستند.
- يشير المعامل "1" إلى أنه عند إنشاء الفهرس باستخدام قيم حقل "Employeeid"، يجب فرزها بترتيب تصاعدي. يُرجى ملاحظة أن هذا يختلف عن حقل _id (الذي يُعرّف كل مستند بشكل فريد) MongoDB يتم إنشاء الملفات تلقائيًا. سيتم الآن فرز المستندات وفقًا لرقم الموظف وليس حقل _id.
إذا تم تنفيذ الأمر بنجاح، فسيتم عرض المخرجات التالية:
الإخراج:
- يشير numIndexesBefore: 1 إلى عدد قيم الحقول في الفهارس قبل تنفيذ الأمر. تحتوي كل مجموعة على الحقل _id، الذي يُحتسب أيضًا كقيمة حقل، لذا فإن قيمة numIndexesBefore تساوي 1.
- يشير numIndexesAfter: 2 إلى عدد قيم الحقول في الفهارس بعد تنفيذ الأمر.
- يشير الناتج "ok: 1" إلى أن العملية كانت ناجحة، وتمت إضافة الفهرس الجديد إلى المجموعة.
يوضح الكود أعلاه كيفية إنشاء فهرس بناءً على قيمة حقل واحد، ولكن يمكن أيضًا إنشاء فهرس بناءً على قيم حقول متعددة. يوضح المثال التالي كيفية القيام بذلك:
db.Employee.createIndex({Employeeid:1, EmployeeName:1})
تأخذ دالة createIndex الآن في الاعتبار قيم حقول متعددة، مما يؤدي إلى إنشاء الفهرس بناءً على "Employeeid" و"EmployeeName". يشير Employeeid:1 وEmployeeName:1 إلى أنه يجب إنشاء الفهرس بناءً على قيمتي الحقلين هاتين، حيث يشير :1 إلى الترتيب التصاعدي. يُعرف هذا النوع من الفهرس بالفهرس المركب.
كيفية إيجاد الفهارس: getIndexes()
إيجاد فهرس في MongoDB يتم باستخدام الحصول على الفهارس الطريقة. يوضح المثال التالي كيفية القيام بذلك:
db.Employee.getIndexes()
يتم استخدام طريقة getIndexes للعثور على كافة الفهارس في المجموعة.
إذا تم تنفيذ الأمر بنجاح، فسيتم عرض المخرجات التالية:
الإخراج:
تُظهر المخرجات مستندًا يُبين وجود فهرسين في المجموعة: حقل _id وحقل Employeeid. يشير الرمز :1 إلى أن قيم الحقول في الفهرس مُرتبة تصاعديًا.
كيفية حذف الفهارس: dropIndex()
إزالة فهرس في MongoDB يتم باستخدام dropIndex الطريقة. يوضح المثال التالي كيفية القيام بذلك:
db.Employee.dropIndex({Employeeid:1})
تأخذ طريقة dropIndex قيم الحقول المطلوبة التي يجب إزالتها من الفهرس.
إذا تم تنفيذ الأمر بنجاح، فسيتم عرض المخرجات التالية:
الإخراج:
- يشير nIndexesWas: 3 إلى عدد قيم الحقول في الفهارس قبل تنفيذ الأمر. تحتوي كل مجموعة على الحقل _id، والذي يُحتسب أيضًا كقيمة حقل.
- يشير الإخراج ok:1 إلى أن العملية كانت ناجحة، ويتم إزالة حقل "Employeeid" من الفهرس.
لإزالة جميع الفهارس دفعة واحدة من المجموعة، يمكن استخدام الأمر dropIndexes. يوضح المثال التالي كيفية القيام بذلك:
db.Employee.dropIndexes()
سوف تقوم طريقة dropIndexes بإسقاط جميع الفهارس باستثناء فهرس _id.
إذا تم تنفيذ الأمر بنجاح، فسيتم عرض المخرجات التالية:
الإخراج:
- يشير nIndexesWas: 2 إلى عدد قيم الحقول في الفهارس قبل تشغيل الأمر.
- تحتوي كل مجموعة على حقل _id، والذي يُعتبر أيضًا قيمة حقل ولن تتم إزالته بواسطة MongoDBهذا ما تشير إليه هذه الرسالة.
- يشير الإخراج ok:1 إلى أن العملية كانت ناجحة.










