$size (الحصول على طول المصفوفة)
آخر تحديث: 2026-10-09
$size (الحصول على طول المصفوفة)
يُرجع $size عدد عناصر مصفوفة كعدد صحيح غير سالب. وهو عامل بيانات المصفوفات الوصفية الأكثر شيوعًا، ويُستخدم لعدّ عناصر الطلبات، اكتشاف المصفوفات الفارغة، أو تصفية المستندات حسب طول المصفوفة داخل $match عبر $expr. يجب أن تكون الوسيطة مصفوفة؛ وتمرير سلسلة أو رقم يُسبب خطأً، ولطول السلاسل استخدم $strLenCP. لا يمكن استخدام $size في صياغة الاستعلام العادية داخل $match — يجب أن يمر عبر $expr.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $size: <array> }
⚙️ المعلمات
| مصفوفة | تعبير المصفوفة الذي يُحسب طوله. |
|---|
القيمة المرجعة:عدد العناصر كعدد صحيح غير سالب؛ يرمي خطأً عندما لا يكون المعامل مصفوفة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $size: عدّ العناصر لكل طلب
db.orders.aggregate([
{ $project: {
itemCount: { $size: '$items' }
} }
])
المخرجات:
{ '_id': 1, 'itemCount': 2 }
{ '_id': 2, 'itemCount': 5 }
📌 ملاحظات
- يجب أن تكون الوسيطة مصفوفة وإلا رُمي خطأ؛ احرس الحقول المفقودة بـ $ifNull لمصفوفة فارغة
- صَفِّ طول المصفوفة في $match عبر { $expr: { $gte: [{ $size: '$tags' }, 3] } }
- قس طول السلسلة بـ $strLenCP لا بـ $size
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن استخدام $size في شروط الاستعلام؟
Aلا في صياغة الاستعلام العادية — لفّه في $expr، مثل { $expr: { $gt: [{ $size: '$tags' }, 2] } }.
Qماذا يحدث عندما يكون الحقل مفقودًا؟
Aيُسبب خطأً. افحص بـ $ifNull أو $cond وعامل المفقود كـ 0.
Qهل يمكن لـ $size عدّ طول سلسلة؟
Aلا، السلاسل ليست مصفوفات. استخدم $strLenCP لطول السلسلة.