$arrayElemAt (الحصول على عنصر مصفوفة بالفهرس)
آخر تحديث: 2026-10-09
$arrayElemAt (الحصول على عنصر مصفوفة بالفهرس)
يُرجع $arrayElemAt العنصر الموجود في موضع فهرس معين داخل مصفوفة. وهو العامل الأساسي للوصول إلى المصفوفات حسب الموضع في تعبيرات التجميع، ويُستخدم غالبًا لأخذ أول عنصر من طلب، أو آخر عنصر في مصفوفة، أو موضع محدد داخل $project. تبدأ الفهارس من 0، وتُعدّ السالبة من النهاية، والوصول خارج النطاق يُرجع null بدل رمي خطأ. على عكس $first/$last، يصل $arrayElemAt إلى أي موضع، مما يجعله أكثر مرونة.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $arrayElemAt: [ <array>, <index> ] }
⚙️ المعلمات
| مصفوفة | المصفوفة، أو تعبير يُحلّ إلى مصفوفة. |
|---|---|
| الفهرس | فهرس صحيح؛ القيم السالبة تُعد من النهاية، و-1 هو العنصر الأخير. |
القيمة المرجعة:العنصر عند الفهرس المعطى؛ null إذا كان خارج النطاق أو كانت المصفوفة null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $arrayElemAt: الحصول على أول عنصر من الطلب
db.orders.aggregate([
{ $project: {
firstItem: { $arrayElemAt: ['$items', 0] }
} }
])
المخرجات:
{ '_id': 1, 'firstItem': { 'sku': 'A01', 'qty': 2 } }
{ '_id': 2, 'firstItem': { 'sku': 'B02', 'qty': 1 } }
📌 ملاحظات
- تبدأ الفهارس من 0؛ استخدم -1 لآخر عنصر دون حساب $size أولًا
- الوصول خارج النطاق يُرجع null لا خطأً؛ اقرنه بـ $ifNull لقيمة بديلة
- على عكس $first/$last اللذين يصلان إلى الأطراف فقط، يصل $arrayElemAt إلى أي موضع
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف أحصل على آخر عنصر في مصفوفة بـ $arrayElemAt؟
Aاستخدم -1 كفهرس، مثل { $arrayElemAt: ['$arr', -1] }، دون حساب الطول أولًا.
Qهل يُسبب فهرس خارج النطاق خطأً؟
Aلا — يُرجع null. لفّه بـ $ifNull لتوفير قيمة افتراضية.
Qما الفرق بين $arrayElemAt و $first؟
A$first يأخذ أول عنصر دائمًا؛ و $arrayElemAt يأخذ أي فهرس بما فيها السالبة، لذا فهو أكثر مرونة.