$map (تحويل عناصر المصفوفة)

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

$map (تحويل عناصر المصفوفة)

يتكرر $map عبر مصفوفة، ويمرر كل عنصر عبر تعبير in، ويجمع النتائج في مصفوفة جديدة بنفس الطول. وهو العامل الوظيفي الأكثر استخدامًا في تعبيرات التجميع. الحالات النموذجية: تطبيق الضريبة على كل عنصر طلب، تحويل قائمة سلاسل إلى أحرف كبيرة، أو استخراج حقل من مصفوفة كائنات. يُشار إلى متغير as بـ $$variable داخل in، أو استخدم $$this عند حذف as. يحافظ $map على الطول ويغيّر قيم العناصر؛ ادمجه مع $filter (الإزالة) و $reduce (الطيّ) لخطوط أنابيب مصفوفات كاملة.

الفئةالمصفوفة
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $map: { input: <array>, as: <variable>, in: <expression> } }

⚙️ المعلمات

inputالمصفوفة المراد التكرار عليها.
asاسم متغير العنصر الحالي، ويُشار إليه بـ $$variable في in؛ اختياري، والافتراضي هو $$this.
inالتعبير المُقيَّم لكل عنصر؛ وتُشكّل نتائجه المصفوفة الجديدة.

القيمة المرجعة:مصفوفة جديدة بنتائج in لكل عنصر؛ null إذا كان الإدخال null

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $map: مضاعفة كمية كل عنصر
db.orders.aggregate([
  { $project: {
      doubled: { $map: { input: '$items', as: 'it', in: { $multiply: ['$$it.qty', 2] } } }
  } }
])

المخرجات:

{ '_id': 1, 'doubled': [ 4, 6 ] }
{ '_id': 2, 'doubled': [ 2 ] }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qما الفرق بين $map و $filter؟
A$map يحوّل كل عنصر دون تغيير الطول؛ و $filter يزيل عناصر دون تغيير المحتوى. ويتداخلان جيدًا.
Qهل يمكن لـ $map تغيير طول المصفوفة؟
Aلا، النتيجة تطابق طول المدخل. استخدم $filter أو $reduce لتغييره.
Qهل يمكنني حذف متغير as؟
Aنعم — أشر إلى العنصر الحالي بـ $$this في in عند الحذف.
Web-Tutorial.com

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

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

100%