$slice (تحديد طول المصفوفة عند التحديث)

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

$slice (تحديد طول المصفوفة عند التحديث)

يحدّ $slice كمعدِّل تحديث طول مصفوفة بعد $push. فالعبارة `{ $push: { log: { $each: [msg], $slice: -10 } } }` تُبقي أحدث 10 إدخالات فقط. القيم السالبة تقصّ من النهاية، والموجبة من البداية. مقترنًا بـ $each ينشئ سجلًا متدحرجًا — نفس اسم $slice في الإسقاط لكن بدور مختلف.

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

📝 الصيغة

{ $push: { <array field>: { $each: [ <value> ], $slice: <count> } } }

⚙️ المعلمات

حقل مصفوفةحقل المصفوفة المراد تحديده.
عددالعدد المراد الإبقاء عليه؛ القيمة السالبة تُبقي من النهاية.

القيمة المرجعة:نتيجة التحديث

▶ مثال

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

// $slice: الإبقاء على آخر 10 إدخالات سجل
// -10 يُبقي 10 من النهاية
db.devices.updateOne(
  { _id: 1 },
  { $push: { log: { $each: ['boot ok'], $slice: -10 } } }
)

المخرجات:

// بعد الإلحاق، يُقصّ log إلى آخر 10 إدخالات

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qهل $slice في التحديث هو نفسه $slice في الإسقاط؟
Aلا. يقصّ $slice في التحديث المصفوفة؛ بينما يشكّل $slice في الإسقاط النتائج فقط.
Qماذا تعني $slice: -10؟
Aالإبقاء على 10 إدخالات من النهاية، منشئًا سجلًا متدحرجًا.
Qهل يجب إقران $slice بـ $each؟
Aنعم، منذ MongoDB 5.0 يعمل $slice مع $each فقط.
Web-Tutorial.com

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

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

100%