$slice (الحصول على مجموعة فرعية من مصفوفة)

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

$slice (الحصول على مجموعة فرعية من مصفوفة)

يستخرج $slice جزءًا من مصفوفة. يدعم صيغتين: الصيغة ذات الوسيطتين تأخذ أول n عنصرًا (أو آخر n عندما تكون n سالبة)، والصيغة ذات الوسائط الثلاثة تتخطى عددًا من العناصر ثم تأخذ عددًا محددًا. الاستخدامات النموذجية: ترقيم صفحات التعليقات، أخذ أحدث الطلبات، أو تحديد عدد الوسوم المُرجعة. يُرجع مصفوفة جديدة دون تعديل الأصلية؛ والوسيطة الفارغة تُرجع null. وهو نظير المصفوفات لـ $substr بالنسبة للسلاسل.

الفئةالمصفوفة
إصدار MongoDB1.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' ] }

📌 ملاحظات

📚 دروس ذات صلة

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

Qكيف آخذ آخر العناصر بـ $slice؟
Aاستخدم عددًا سالبًا، مثل { $slice: ['$arr', -3] } لآخر 3.
Qهل يدعم $slice ترقيم الصفحات؟
Aنعم — { $slice: ['$arr', 10, 10] } يتخطى 10 ويأخذ 10.
Qهل يُسبب التقطيع بعد الطول خطأً؟
Aلا — يُرجع العناصر الموجودة، دون حشو null.
Web-Tutorial.com

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

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

100%