$group (تجميع المستندات)

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

$group (تجميع المستندات)

يجمع $group المستندات حسب مفتاح محدد (_id) ويطبق تعبيرات المُراكم ($sum/$avg/$max...) لكل مجموعة. إنها أقوى مراحل خط الأنابيب، مكافئة لـ GROUP BY في SQL. يمكن أن يكون _id مسار حقل ("$field") أو تعبيرًا مركبًا يعرّف مفتاح التجميع.

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

📝 الصيغة

{ $group: { _id: <group-key>, <field>: { <accumulator>: <expr> }, ... } }

▶ مثال

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

// $group: العد والإجمالي حسب الحالة
db.orders.aggregate([
  { $group: { _id: "$status", count: { $sum: 1 }, total: { $sum: "$amount" } } }
])

المخرجات:

{ "_id": "A", "count": 2, "total": 380 }
{ "_id": "B", "count": 1, "total": 130 }

📌 ملاحظات

📚 دروس ذات صلة

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

Qهل $group مكافئ تمامًا لـ GROUP BY في SQL؟
Aمكافئ جوهريًا، لكنه أكثر مرونة: يمكن أن يكون _id أي تعبير، والأعمدة غير المُجمَّعة يجب استرجاعها عبر $first/$push بدلًا من اختيارها مباشرة.
Qهل _id مطلوب في $group؟
Aنعم. يعرّف _id مفتاح التجميع ويمكن أن يكون حقلًا أو تعبيرًا أو كائنًا مركبًا؛ تمرير null يجمع كل المستندات في مجموعة واحدة.
Qهل ترتيب حقول مخرجات $group مستقر؟
Aلا يضمن MongoDB ترتيب مخرجات $group ولا تسلسل التجميع. أضف مرحلة $sort بعد ذلك لفرض الترتيب.
Web-Tutorial.com

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

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

100%