aggregate() (خط أنابيب التجميع)

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

aggregate() (خط أنابيب التجميع)

تشغّل aggregate() خط أنابيب متعدد المراحل يجمع المستندات ويحسبها ويعيد تشكيلها، مثل `db.users.aggregate([{ $group: { _id: '$city', total: { $sum: 1 } } }])`. تحوّل المراحل مثل $match و $group و $sort و $project البيانات بالتتابع. وهي أقوى بكثير من find()، والخيار الأول للتقارير والجداول المحورية. يعمل خط الأنابيب على الخادم ويُعيد مؤشرًا (أو نتائج مباشرة).

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

📝 الصيغة

db.<collection>.aggregate(<pipeline>, { allowDiskUse: <bool> })

⚙️ المعلمات

مصفوفة المراحلمصفوفة مراحل خط الأنابيب، مثل [{$match: {...}}, {$group: {...}}].
allowDiskUseاختياري. ‏true يسمح بتفريغ النتائج الوسيطة التي تتجاوز 100MB إلى القرص.

القيمة المرجعة:مؤشر على نتائج التجميع؛ فارغ عندما يكتب ‏$out/$merge إلى مجموعة.

▶ مثال

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

// aggregate: عدّ المستخدمين مجمّعين حسب المدينة
const result = db.users.aggregate([
  { $group: { _id: '$address.city', total: { $sum: 1 } } },
  { $sort: { total: -1 } }
])
result.toArray()

المخرجات:

[
  { _id: 'Beijing', total: 12 },
  { _id: 'Shanghai', total: 8 }
]

📌 ملاحظات

📚 دروس ذات صلة

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

Qما الفرق بين aggregate و find؟
Afind() تستعلم وتعرض فقط؛ بينما aggregate() يمكنها التجميع والعدّ والجمع والربط — وهي مبنية للتقارير.
Qماذا لو تجاوز التجميع حد الذاكرة؟
Aمرّر {allowDiskUse: true} لتفريغ النتائج الوسيطة إلى القرص، أو حسّن الأداء بـ $match مبكر.
Qكيف أستهلك نتائج التجميع؟
Aتُعيد مؤشرًا — استدعِ .toArray() أو كرِّر عليه؛ مع $out يعود المؤشر فارغًا إذ تستقر النتائج في مجموعة.
Web-Tutorial.com

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

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

100%