$reduce (اختزال مصفوفة إلى قيمة واحدة)
آخر تحديث: 2026-10-09
$reduce (اختزال مصفوفة إلى قيمة واحدة)
يطوي $reduce مصفوفة إلى قيمة واحدة — المعادل التجميعي لدالة الاختزال (reduce/fold). يأخذ initialValue وتعبير in حيث يكون $$value هو المراكم و $$this هو العنصر الحالي. الاستخدامات النموذجية: جمع مصفوفة أرقام، دمج سلاسل نصية، أو عدّ العناصر التي تحقق شرطًا. المصفوفة الفارغة تُرجع initialValue مباشرة. $reduce أعم من $sum أو $concat ويمكنه التعبير عن أي منطق تراكمي.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $reduce: { input: <array>, initialValue: <initialValue>, in: <reducer> } }
⚙️ المعلمات
| input | المصفوفة المراد اختزالها. |
|---|---|
| initialValue | القيمة الابتدائية للمجمِّع. |
| in | تعبير المُختزِل؛ $$value هو المجمِّع، و$$this هو العنصر الحالي. |
القيمة المرجعة:قيمة مُختزَلة واحدة؛ المصفوفة الفارغة تُرجع initialValue؛ والمدخل null ينتج null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $reduce: جمع المصفوفة
db.stats.aggregate([
{ $project: {
total: { $reduce: { input: '$scores', initialValue: 0, in: { $add: ['$$value', '$$this'] } } }
} }
])
المخرجات:
{ '_id': 1, 'total': 285 }
📌 ملاحظات
- داخل in، $$value هو المراكم و $$this هو العنصر الحالي؛ وكلاهما مضمّن
- المصفوفة الفارغة تُرجع initialValue دون خطأ
- نوع initialValue يحدد نوع النتيجة: 0 يعطي أرقامًا و '' يعطي سلاسل
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن لـ $reduce جمع مصفوفة؟
Aنعم — initialValue 0 مع { $add: ['$$value', '$$this'] }؛ وللأرقام البسيطة يعمل $sum أيضًا.
Qماذا يحدث مع مصفوفة فارغة؟
Aيُرجع initialValue مباشرة، دون خطأ.
Qما هما $$value و $$this؟
A$$value هو النتيجة الجارية و $$this هو العنصر الحالي؛ ويوجدان فقط داخل in لـ $reduce.