$sortArray (فرز العناصر داخل المصفوفة)
آخر تحديث: 2026-10-09
$sortArray (فرز العناصر داخل المصفوفة)
يفرز $sortArray العناصر داخل مصفوفة، وهو جديد في MongoDB 5.2. تستخدم مصفوفات القيم القياسية 1 (تصاعدي) أو -1 (تنازلي)؛ وتحدد مصفوفات الكائنات مفاتيح الفرز بـ { field: 1/-1 } أو بصيغة المصفوفة [ [ 'field', 1 ] ] للفرز متعدد المفاتيح. الاستخدامات النموذجية: ترتيب التعليقات حسب الوقت تنازليًا أو المنتجات حسب السعر تصاعديًا قبل العرض. يُرجع مصفوفة جديدة دون تعديل المصدر؛ وكائن sortBy الفارغ يُسبب خطأً.
| الفئة | المصفوفة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $sortArray: { input: <array>, sortBy: <sortSpec> } }
⚙️ المعلمات
| input | المصفوفة المراد ترتيبها. |
|---|---|
| sortBy | مواصفة الترتيب: 1/-1 للمصفوفات القياسية؛ و{ field: 1/-1 } أو [ [ 'field', 1 ] ] لمصفوفات الكائنات. |
القيمة المرجعة:مصفوفة جديدة بعناصر مرتَّبة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $sortArray: فرز العناصر حسب السعر تصاعديًا
db.orders.aggregate([
{ $project: {
sorted: { $sortArray: { input: '$items', sortBy: { price: 1 } } }
} }
])
المخرجات:
{ '_id': 1, 'sorted': [ { 'sku': 'B', 'price': 5 }, { 'sku': 'A', 'price': 9 } ] }
📌 ملاحظات
- يتطلب MongoDB 5.2+؛ وفي الإصدارات الأقدم استخدم $unwind ثم $sort ثم $group
- العناصر التي ينقصها حقل مفتاح الفرز تُرتَّب في النهاية
- كائن sortBy الفارغ يُسبب خطأً؛ وعناصر null تُرتَّب دائمًا أخيرة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يدعم $sortArray الفرز متعدد الحقول؟
Aنعم — استخدم الصيغة [ [ 'field1', 1 ], [ 'field2', -1 ] ].
Qهل يعمل على MongoDB الأقدم؟
Aجديد في 5.2؛ وفي الإصدارات الأقدم فكّك بـ $unwind، رتّب بـ $sort، ثم أعد التجميع.
Qأين تُرتَّب العناصر التي ينقصها المفتاح؟
Aتُرتَّب في نهاية المصفوفة.