$reduce (اختزال مصفوفة إلى قيمة واحدة)

آخر تحديث: 2026-10-09

$reduce (اختزال مصفوفة إلى قيمة واحدة)

يطوي $reduce مصفوفة إلى قيمة واحدة — المعادل التجميعي لدالة الاختزال (reduce/fold). يأخذ initialValue وتعبير in حيث يكون $$value هو المراكم و $$this هو العنصر الحالي. الاستخدامات النموذجية: جمع مصفوفة أرقام، دمج سلاسل نصية، أو عدّ العناصر التي تحقق شرطًا. المصفوفة الفارغة تُرجع initialValue مباشرة. $reduce أعم من $sum أو $concat ويمكنه التعبير عن أي منطق تراكمي.

الفئةالمصفوفة
إصدار MongoDB1.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 }

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

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

Qهل يمكن لـ $reduce جمع مصفوفة؟
Aنعم — initialValue 0 مع { $add: ['$$value', '$$this'] }؛ وللأرقام البسيطة يعمل $sum أيضًا.
Qماذا يحدث مع مصفوفة فارغة؟
Aيُرجع initialValue مباشرة، دون خطأ.
Qما هما $$value و $$this؟
A$$value هو النتيجة الجارية و $$this هو العنصر الحالي؛ ويوجدان فقط داخل in لـ $reduce.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%