$sort (الفرز)
آخر تحديث: 2026-10-09
$sort (الفرز)
يرتب $sort مستندات خط الأنابيب حسب حقول محددة: 1 تصاعدي، -1 تنازلي، مع دعم الفرز متعدد الحقول. ضعه قرب النهاية، لأن المراحل الوسيطة قد تعيد ترتيب المستندات. للفرز بفهرس، ضع $match أولًا. الفرز الكبير يتجاوز حد الذاكرة الافتراضي 100MB ويفشل ما لم يُفعَّل allowDiskUse.
| الفئة | المراحل الأساسية |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $sort: { <field1>: <1 or -1>, <field2>: <1 or -1> } }
⚙️ المعلمات
| مفتاح الفرز | أسماء الحقول مربوطة بـ 1 (تصاعدي) أو -1 (تنازلي)؛ وتُقارَن الحقول المتعددة بترتيب كتابتها. |
|---|
القيمة المرجعة:تدفق مستندات مرتَّب
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $sort: أعلى درجة أولًا، والاسم تصاعديًا عند التعادل
db.scores.aggregate([
{ $sort: { score: -1, name: 1 } }
])
المخرجات:
{ "name": "Alice", "score": 98 }
{ "name": "Bob", "score": 92 }
📌 ملاحظات
- فرز الحقول المتعددة يقارن بالترتيب المكتوب
- الفرز فوق 100MB يفشل ما لم يُفعَّل allowDiskUse
- اتبع $sort بـ $limit لبناء استعلامات أعلى-N
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مسارات التجميع المتقدمة: التعبيرات والتحويلات المعقدة
مقدمة إلى مسارات التجميع: طريقة `aggregate` والمرحلة الأساسية
$facet + $bucket + البحث النصي/الجغرافي المكاني
$lookup والارتباطات مع مجموعات متعددة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qكيف يتعامل $sort مع الحقول المتعددة؟
Aتُقارن الحقول بالترتيب المكتوب: أولًا بالحقل الأول، ثم بالثاني عند تعادل القيم.
Qهل يمكن لـ $sort استخدام فهرس؟
Aعندما يطابق مفتاح الفرز فهرسًا وكانت المرحلة أولًا أو تتبع $match، يتجنب الفهرس الفرز في الذاكرة.
Qماذا لو تجاوز $sort حد الذاكرة؟
Aمرر allowDiskUse: true في خيارات التجميع ليُفرّغ على القرص.