$bucketAuto (مجموعات تلقائية)

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

$bucketAuto (مجموعات تلقائية)

يوزع $bucketAuto المستندات على عدد محدد من المجموعات بأعداد متساوية تقريبًا، محسوبًا الحدود من توزيع القيم — دون حدود يدوية. تنقر granularity الحدود على تسلسلات أرقام قانونية. _id كل مستند مخرج كائن حد { min, max }. رائع للمدرجات التلقائية ونظرات عامة على التوزيع.

الفئةالتجميع والنافذة
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $bucketAuto: { groupBy: <expression>, buckets: <positive integer>, output: { <field>: <accumulator> }, granularity: <granularity> } }

⚙️ المعلمات

groupByتعبير يحدد الانتماء إلى الحاوية (bucket).
bucketsعدد الحاويات (buckets) المطلوب؛ يجب أن يكون عددًا صحيحًا موجبًا.
outputمجمِّعات لكل حاوية (bucket)، مثل ‏$avg أو $sum.
granularityتسلسل رقمي قياسي للحدود، مثل ‏R5 و1-2-5 وE12 وPOWERSOF2.

القيمة المرجعة:مستند واحد { _id: { min, max }, count, ... } لكل حاوية (bucket)

▶ مثال

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

// $bucketAuto: التقسيم إلى 4 مجموعات، بمتوسط لكل مجموعة
db.scores.aggregate([
  { $bucketAuto: {
    groupBy: '$score',
    buckets: 4,
    output: { avg: { $avg: '$score' } }
  } }
])

المخرجات:

{ "_id": { "min": 0, "max": 45 }, "count": 10, "avg": 22.4 }
{ "_id": { "min": 45, "max": 82 }, "count": 10, "avg": 63.1 }

📌 ملاحظات

📚 دروس ذات صلة

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

Qهل عدد المجموعات دقيق؟
Aليس دائمًا؛ المستندات القليلة أو القيم المنحرفة يمكن أن تنتج مجموعات أقل من المطلوب.
Qماذا يفعل معامل granularity؟
Aينقر الحدود على تسلسلات قانونية مثل 1-2-5 أو E12 لعلامات تدرج قياسية.
Qهل يجب استخدام $bucketAuto أم $bucket؟
Aاختر $bucketAuto لمجموعات متساوية دون حدود يدوية؛ و$bucket لحدود مخصصة.
Web-Tutorial.com

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

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

100%