$zip (دمج مصفوفات متعددة حسب الموضع)

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

$zip (دمج مصفوفات متعددة حسب الموضع)

يدمج $zip مصفوفات عدة حسب الموضع في مجموعات، تحوي كل مجموعة العنصر الموجود في نفس الفهرس من كل مدخل — محاذاة رأسية للمصفوفات. يقصّ عند أقصر مصفوفة افتراضيًا؛ وضبط useLongestLength على true يحاذي عند الأطول ويملأ الفجوات من defaults. الاستخدامات النموذجية: إقران مصفوفة أسماء بمصفوفة درجات أو ربط سلسلتين زمنيتين. يجب أن يكون لـ defaults نفس عدد عناصر المدخلات.

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

📝 الصيغة

{ $zip: { inputs: [ <array1>, <array2>, ... ], useLongestLength: <boolean>, defaults: [ <default>, ... ] } }

⚙️ المعلمات

inputsقائمة المصفوفات المراد دمجها.
useLongestLengthقيمة منطقية اختيارية؛ ‏true يوائم مع أطول مصفوفة.
defaultsقيم افتراضية اختيارية لملء المصفوفات الأقصر؛ يجب أن تطابق عدد المدخلات.

القيمة المرجعة:مصفوفة مجمَّعة حسب الموضع؛ null عندما يكون أي إدخال null

▶ مثال

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

// $zip: إقران الأسماء بالدرجات
db.students.aggregate([
  { $project: {
      pairs: { $zip: { inputs: ['$names', '$scores'] } }
  } }
])

المخرجات:

{ '_id': 1, 'pairs': [ [ 'alice', 90 ], [ 'bob', 85 ] ] }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qماذا يحدث عندما تختلف أطوال المصفوفات؟
Aيقصّ عند الأقصر افتراضيًا؛ اضبط useLongestLength true ووفّر defaults.
Qماذا تفعل defaults؟
Aتملأ الفجوات في المصفوفات الأقصر ويجب أن تطابق عدد المدخلات.
Qكيف يختلف $zip عن $concatArrays؟
A$zip يحاذي المصفوفات رأسيًا في صفوف؛ و $concatArrays يسلاسلها أفقيًا في مصفوفة طويلة واحدة.
Web-Tutorial.com

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

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

100%