$slice (الحصول على مجموعة فرعية من مصفوفة)
آخر تحديث: 2026-10-09
$slice (الحصول على مجموعة فرعية من مصفوفة)
يستخرج $slice جزءًا من مصفوفة. يدعم صيغتين: الصيغة ذات الوسيطتين تأخذ أول n عنصرًا (أو آخر n عندما تكون n سالبة)، والصيغة ذات الوسائط الثلاثة تتخطى عددًا من العناصر ثم تأخذ عددًا محددًا. الاستخدامات النموذجية: ترقيم صفحات التعليقات، أخذ أحدث الطلبات، أو تحديد عدد الوسوم المُرجعة. يُرجع مصفوفة جديدة دون تعديل الأصلية؛ والوسيطة الفارغة تُرجع null. وهو نظير المصفوفات لـ $substr بالنسبة للسلاسل.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $slice: [ <array>, <count> ] } or { $slice: [ <array>, <skip>, <count> ] }
⚙️ المعلمات
| مصفوفة | المصفوفة المراد تقطيعها. |
|---|---|
| عدد | عدد العناصر المراد أخذها؛ وعندما يكون سالبًا في الصيغة ذات المعاملين، يأخذ آخر n من النهاية. |
| التخطي | اختياري؛ عدد العناصر التي تُتخطى أولًا في الصيغة ذات الثلاثة معاملات؛ والقيمة السالبة تبدأ العد من النهاية. |
القيمة المرجعة:المصفوفة الفرعية المستخرجة؛ null إذا كان أي معامل null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $slice: أخذ أول 3 وسوم
db.posts.aggregate([
{ $project: {
topTags: { $slice: ['$tags', 3] }
} }
])
المخرجات:
{ '_id': 1, 'topTags': [ 'mongo', 'db', 'nosql' ] }
📌 ملاحظات
- الصيغة ذات الوسيطتين [array, n]: n الموجبة تأخذ أول n، والسالبة تأخذ آخر n
- الصيغة ذات الوسائط الثلاثة [array, skip, count]: skip السالب يبدأ العد من النهاية
- التقطيع بعد طول المصفوفة لا يُسبب خطأً أبدًا؛ يُرجع ما يوجد
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف آخذ آخر العناصر بـ $slice؟
Aاستخدم عددًا سالبًا، مثل { $slice: ['$arr', -3] } لآخر 3.
Qهل يدعم $slice ترقيم الصفحات؟
Aنعم — { $slice: ['$arr', 10, 10] } يتخطى 10 ويأخذ 10.
Qهل يُسبب التقطيع بعد الطول خطأً؟
Aلا — يُرجع العناصر الموجودة، دون حشو null.