$topN (مُراكم أعلى N)
آخر تحديث: 2026-10-09
$topN (مُراكم أعلى N)
$topN مُراكم يُرجع N مستندات أعلى (أو قيم تعبير) لكل مجموعة وفق ترتيب فرز محدد، متاح منذ MongoDB 5.2. يأتي الترتيب من sortBy الخاص بـ $group؛ ويمكن أن يكون n ثابتًا أو تعبيرًا. رائع للوحات المتصدرين وقوائم الأعلى لكل مجموعة.
| الفئة | التراكميات |
|---|---|
| إصدار MongoDB | 5.2+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $group: { _id: <key>, topN: { $topN: { sortBy: { <field>: <1 or -1> }, output: <expression>, n: <number> } } } }
القيمة المرجعة:مصفوفة بأعلى N من القيم أو المستندات لكل مجموعة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $topN: أفضل 3 أسماء لكل صف
db.scores.aggregate([
{ $group: { _id: '$class', top3: { $topN: { sortBy: { score: -1 }, output: '$name', n: 3 } } } }
])
المخرجات:
{ "_id": "A", "top3": ["Alice", "Bob", "Carol"] }
📌 ملاحظات
- يتطلب MongoDB 5.2 أو أحدث
- يقبل n تعبيرًا، فيمكن أن يكون ديناميكيًا
- التعادلات في sortBy ليست حتمية في ترتيب النتائج
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن أن تكون n في $topN متغيرًا؟
Aنعم، يمكن أن تكون n تعبيرًا يشير إلى حقل، مثل '$limitCount'.
Qكيف يختلف $topN عن $sort مع $limit؟
Aيأخذ $topN الأعلى N داخل كل مجموعة؛ بينما يأخذ $sort مع $limit الأعلى N من التدفق بأكمله.
Qكيف تُعالج التعادلات؟
Aالعناصر المتعادلة غير مرتبة؛ استخدم مفتاح فرز فريدًا للاستقرار.