countDocuments() (عدّ مع مرشح)
آخر تحديث: 2026-10-09
countDocuments() (عدّ مع مرشح)
تعدّ countDocuments() المستندات المطابقة لمرشح، مثل `db.users.countDocuments({ age: { $gte: 18 } })`. تُنفَّذ على الخادم وتُعيد عدًّا دقيقًا. على عكس estimatedDocumentCount()، فإنها تقيّم المرشح فعلًا، لذا فهي دقيقة لكن أبطأ — الخيار الصحيح عندما تكون الدقة مهمة. للاستعلامات الحساسة للأداء على مجموعات ضخمة، اسند المرشح بفهرس.
| الفئة | القراءة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.countDocuments(<filter>, { limit: <number> })
⚙️ المعلمات
| شرط التصفية | عامل تصفية للعدّ؛ {} الفارغ يعدّ الكل. |
|---|---|
| limit | اختياري. الحد الأعلى للمستندات المعدودة. |
القيمة المرجعة:عدد المستندات المطابقة (عدد صحيح).
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// countDocuments: عدّ المستخدمين البالغين
const n = db.users.countDocuments({ age: { $gte: 18 } })
print('Adults: ' + n)
المخرجات:
Adults: 42
📌 ملاحظات
- عدّ دقيق يقيم المرشح فعلًا — أبطأ من estimatedDocumentCount
- افهرس الحقول المفلترة لتجنب فحص المجموعة بالكامل
- مرّر مرشحًا فارغًا {} للحصول على العدد الكلي للمستندات
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
أساسيات الاستعلام عن المستندات: طريقة `find` وعمليات الإسقاط
واجهة برمجة التطبيقات (API) القائمة على نمط REST في الممارسة العملية: دليل شامل لتصميم عمليات CRUD
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف تختلف countDocuments عن estimatedDocumentCount؟
Aتقيّم countDocuments() المرشح بدقة لكنها أبطأ؛ بينما تستخدم estimatedDocumentCount() البيانات الوصفية للمجموعة — سريعة لكن تقريبية.
Qلماذا لا يُنصح بعدّ مجموعة كاملة بـ countDocuments؟
Aيجب أن تفحص التطابقات، وهو بطيء للمجموعات الكبيرة. عندما يكفي حجم تقريبي، استخدم estimatedDocumentCount().
Qهل تُعيد countDocuments 0 أم ترفع خطأً عند عدم التطابق؟
Aتُعيد 0 دون رفع خطأ — آمنة للاستخدام في الشروط.