$sort (فرز المصفوفة عند التحديث)
آخر تحديث: 2026-10-09
$sort (فرز المصفوفة عند التحديث)
يرتب $sort كمعدِّل تحديث عناصر المصفوفة بعد $push. فالعبارة `{ $push: { scores: { $each: [85], $sort: -1 } } }` ترتب تنازليًا. تألفه مع $slice للفرز ثم القص، محتفظًا بأعلى N. هو معدِّل تحديث مصفوفة فقط، متميز عن طريقة الفرز sort() في الاستعلام.
| الفئة | معدّل التحديث |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $push: { <array field>: { $each: [ <value> ], $sort: <1 or -1> } } }
⚙️ المعلمات
| حقل مصفوفة | حقل المصفوفة المراد ترتيبه. |
|---|---|
| اتجاه الفرز | 1 تصاعدي، -1 تنازلي. |
القيمة المرجعة:نتيجة التحديث
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $sort: الفرز تنازليًا بعد الإلحاق
// 1 تصاعدي، -1 تنازلي
db.rankings.updateOne(
{ _id: 1 },
{ $push: { scores: { $each: [85], $sort: -1 } } }
)
// مع $slice: الإبقاء على أعلى 3
db.rankings.updateOne(
{ _id: 1 },
{ $push: { scores: { $each: [85], $sort: -1, $slice: 3 } } }
)
المخرجات:
// تُرتب scores تنازليًا بعد الإلحاق؛ الاستعلام الثاني يقصّها إلى أعلى 3
📌 ملاحظات
- يعمل فقط كمعدِّل $push
- اجمعه مع $slice لقائمة أعلى-N
- غير مرتبط بطريقة الفرز sort() في الاستعلام
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $sort في التحديث وsort() في الاستعلام؟
Aيرتب $sort في التحديث عناصر المصفوفة؛ بينما ترتب sort() المستندات المرجعة.
Qكيف يتألف $sort مع $slice؟
A$push: { $each: [...], $sort: -1, $slice: 10 } — رتب أولًا، ثم اقص.
Qهل يمكنه الفرز حسب حقل متداخل؟
Aنعم، يدعم $sort صيغة الكائن { field: 1 }.