$zip (دمج مصفوفات متعددة حسب الموضع)
آخر تحديث: 2026-10-09
$zip (دمج مصفوفات متعددة حسب الموضع)
يدمج $zip مصفوفات عدة حسب الموضع في مجموعات، تحوي كل مجموعة العنصر الموجود في نفس الفهرس من كل مدخل — محاذاة رأسية للمصفوفات. يقصّ عند أقصر مصفوفة افتراضيًا؛ وضبط useLongestLength على true يحاذي عند الأطول ويملأ الفجوات من defaults. الاستخدامات النموذجية: إقران مصفوفة أسماء بمصفوفة درجات أو ربط سلسلتين زمنيتين. يجب أن يكون لـ defaults نفس عدد عناصر المدخلات.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.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 ] ] }
📌 ملاحظات
- يقصّ عند أقصر مصفوفة افتراضيًا، مسقطًا العناصر الزائدة
- مع useLongestLength true، وفّر defaults أو تصبح الفجوات null
- يجب أن يكون لـ defaults عدد عناصر مساوٍ تمامًا للمدخلات
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يحدث عندما تختلف أطوال المصفوفات؟
Aيقصّ عند الأقصر افتراضيًا؛ اضبط useLongestLength true ووفّر defaults.
Qماذا تفعل defaults؟
Aتملأ الفجوات في المصفوفات الأقصر ويجب أن تطابق عدد المدخلات.
Qكيف يختلف $zip عن $concatArrays؟
A$zip يحاذي المصفوفات رأسيًا في صفوف؛ و $concatArrays يسلاسلها أفقيًا في مصفوفة طويلة واحدة.