وظائف Count() & Remove() في MongoDB مع المثال

⚡ ملخص ذكي

الدالتان Count() و Remove() في MongoDB يمكنك من خلال هذه الطريقة عرض عدد المستندات الموجودة في مجموعة وحذف المستندات منها. تُعيد الدالة count() إجمالي عدد المستندات، بينما تحذف الدالة remove() جميع المستندات أو فقط تلك التي تُطابق شرطًا مُحددًا.

  • 🔢 عدد المستندات: تقوم الدالة count() بإرجاع عدد المستندات في مجموعة أو التي تطابق استعلامًا.
  • 🎯 العد باستخدام الفلتر: يؤدي تمرير شرط إلى الدالة count() إلى الإبلاغ فقط عن المستندات التي تحقق هذا الشرط.
  • 🗑️ حذف المستندات: تقوم طريقة remove() بحذف المستندات، إما جميعها أو تلك التي تطابق كائن المعايير.
  • ☝️ قم بإزالة واحد: يحد خيار justOne من وظيفة remove() لحذف مستند واحد مطابق بدلاً من جميع التطابقات.
  • 🔄 الأساليب الحديثة: تُعتبر الدالة countDocuments() والدالة deleteMany() البديلين الحاليين للدالة count() والدالة remove() المهملة.
  • 🖨️ التحقق من الناتج: يُعيد كل أمر نتيجة تُظهر عدد المستندات التي تمت إزالتها.

وظائف Count() & Remove() في MongoDB

MongoDB وظيفة العد ().

مفهوم التجميع هو إجراء عملية حسابية على النتائج التي يتم إرجاعها في الاستعلام. على سبيل المثال، لنفترض أنك تريد معرفة عدد المستندات في مجموعة وفقًا للاستعلام الذي تم تشغيله، إذن MongoDB يوفر وظيفة العد ().

مثال MongoDB وظيفة العد ().

دعونا نلقي نظرة على مثال على ذلك.

db.Employee.count()

Code التفسير:

  • الكود أعلاه ينفذ وظيفة العد.

إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي

الإخراج:

مثال MongoDB وظيفة العد ().

يُظهر الإخراج بوضوح وجود 4 مستندات في المجموعة.

MongoDB العد باستخدام شرط الاستعلام

تُعدّ دالة count() مفيدةً للغاية عند تمرير شرط استعلام، حيث تحسب فقط المستندات المطابقة بدلاً من المجموعة بأكملها. وهذا مفيدٌ للتقارير، مثل عدد الموظفين في قسمٍ ما أو عدد الطلبات التي لا تزال مفتوحة.

يوضح المثال التالي عدد الموظفين الذين يكون رقم تعريفهم الوظيفي (Employeeid) أكبر من 2:

db.Employee.count({Employeeid:{$gt:2}})

هذا ما يحدث:

  • يعمل كائن الاستعلام {Employeeid:{$gt:2}} كعامل تصفية، باستخدام عامل التشغيل $gt (أكبر من).
  • تقوم الدالة count() بإرجاع عدد المستندات التي تستوفي معايير التصفية فقط.
  • يتم تجاهل باقي المجموعة في المجموع الكلي.

في التيار MongoDB في الإصدارات السابقة، تُعدّ دالة countDocuments() الطريقة المُوصى بها لإجراء عدّ مشروط، لأنها تُعيد دائمًا نتيجة دقيقة. ويمكن استخدام نفس الاستعلام معها.

db.Employee.countDocuments({Employeeid:{$gt:2}})

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

إجراء التعديلات

الفئتان الأخريان من العمليات في MongoDB هي التحديث وإزالة البيانات.

تسمح عمليات التحديث بتعديل البيانات الموجودة، وتسمح عمليات الإزالة بحذف البيانات من المجموعة.

وظيفة إزالة () في MongoDB

In MongoDBأطلقت حملة db.collection.remove() يتم استخدام الطريقة لإزالة المستندات من المجموعة. يمكن إزالة جميع المستندات من المجموعة أو فقط تلك التي تطابق شرطًا معينًا.

إذا قمت فقط بإصدار أمر الإزالة، فستتم إزالة جميع المستندات من المجموعة.

مثال MongoDB وظيفة الإزالة ().

يوضح مثال الكود التالي كيفية إزالة مستند معين من المجموعة.

db.Employee.remove({Employeeid:22})

Code التفسير:

  • يستخدم الكود أعلاه وظيفة الإزالة ويحدد المعايير التي تتمثل في هذه الحالة في إزالة المستندات التي تحتوي على معرف الموظف كـ 22.

إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي

الإخراج:

مثال MongoDB وظيفة الإزالة ().

ستظهر النتيجة أنه تمت إزالة مستند واحد.

حذف جميع المستندات مقابل حذف مستند واحد

يمكن للدالة remove() حذف جميع المستندات المطابقة أو مستند واحد فقط، وذلك بحسب الوسائط التي تُمررها. إن فهم الفرق بينهما يمنع فقدان البيانات عن طريق الخطأ.

لإزالة جميع المستندات في مجموعة، مرر شرطًا فارغًا:

db.Employee.remove({})

يؤدي هذا إلى حذف جميع المستندات مع الاحتفاظ بالمجموعة نفسها. لحذف المستندات التي تطابق شرطًا معينًا فقط، مرر كائن استعلام، كما هو موضح سابقًا مع {Employeeid:22}. إذا تطابقت عدة مستندات وتريد حذف المستند الأول فقط، فأضف الخيار justOne.

db.Employee.remove({EmployeeName:"Smith"}, {justOne:true})

الاختلافات الرئيسية هي:

  • يؤدي الأمر remove({}) إلى حذف جميع المستندات في المجموعة.
  • تقوم الدالة remove({condition}) بحذف كل مستند يطابق الشرط.
  • remove({condition}, {justOne:true}) يحذف المستند الأول المطابق فقط.

تحقق دائمًا من الشرط جيدًا قبل تنفيذ أمر الحذف، لأن عامل التصفية الفارغ أو الخاطئ قد يؤدي إلى مسح المجموعة بأكملها. في الأنظمة الحديثة MongoDB، تقوم الدالتان deleteOne() و deleteMany() باستبدال هذه الأنماط وتجعلان الغرض أكثر وضوحًا.

بدائل حديثة للدالتين count() و remove()

كلتا الدالتين count() و remove() هما دالتان قديمتان. أما الدالتان الأحدث فهما MongoDB يُصنّف السائقون هذه الطرق على أنها مهملة ويُقدّمون بدائل أوضح. يوضح الجدول أدناه العلاقة بين كل طريقة قديمة وما يُقابلها من طرق حديثة:

الطريقة القديمة الاستبدال الحديث الهدف
عدد() countDocuments() يُرجع عددًا دقيقًا للمستندات المطابقة
عدد() عدد المستندات المقدرة() يُعيد عددًا تقريبيًا وسريعًا لجميع المستندات
إزالة() حذف واحد () يحذف أول مستند يطابق عامل التصفية
إزالة() حذف العديد من يحذف كل مستند يطابق الفلتر

بالنسبة للتطبيقات الجديدة، يُفضّل استخدام هذه الطرق الحديثة. فهي تفصل بين عدّ المستندات وتقدير عددها، وبين حذف مستند واحد وحذف عدة مستندات، مما يجعل الاستعلامات أكثر أمانًا وأسهل قراءةً. ولا تزال الدالتان القديمتان count() و remove() تعملان مع البرامج التعليمية والنصوص البرمجية القديمة.

الأسئلة الشائعة

تقوم الدالة remove() بحذف المستندات مع الاحتفاظ بالمجموعة وفهارسها. أما الدالة drop() فتحذف المجموعة بأكملها، بما في ذلك جميع المستندات والفهارس. استخدم remove() لحذف البيانات، و drop() للتخلص من المجموعة بالكامل.

لا، دالة remove() تحذف المستندات الموجودة داخل المجموعة فقط. تبقى المجموعة وفهارسها وإعداداتها كما هي، لذا يمكنك إضافة مستندات جديدة إلى نفس المجموعة لاحقًا دون الحاجة إلى إعادة إنشائها.

يمكن للدالة القديمة count() أن تُرجع قيمة تقريبية في المجموعات المُجزأة بعد العمليات الفاشلة. للحصول على إجمالي دقيق، استخدم countDocuments()، التي تُجري عملية تجميع؛ استخدم estimatedDocumentCount() عندما تكون السرعة أهم من الدقة.

بإمكان الذكاء الاصطناعي ترجمة طلب عادي إلى استعلام عدّ أو حذف صحيح باستخدام الفلتر المناسب، كما يُنبهك عندما يؤثر أمر الحذف على جميع المستندات. راجعه دائمًا قبل تنفيذه.

نعم. يمكن للذكاء الاصطناعي مراجعة أمر الإزالة أو حذف العديد، وتحديد عامل تصفية مفقود من شأنه مسح المجموعة بأكملها، واقتراح إضافة شرط أو أخذ نسخة احتياطية قبل تشغيله.

تلخيص هذه التدوينة بـ: