$bucketAuto (مجموعات تلقائية)
آخر تحديث: 2026-10-09
$bucketAuto (مجموعات تلقائية)
يوزع $bucketAuto المستندات على عدد محدد من المجموعات بأعداد متساوية تقريبًا، محسوبًا الحدود من توزيع القيم — دون حدود يدوية. تنقر granularity الحدود على تسلسلات أرقام قانونية. _id كل مستند مخرج كائن حد { min, max }. رائع للمدرجات التلقائية ونظرات عامة على التوزيع.
| الفئة | التجميع والنافذة |
|---|---|
| إصدار MongoDB | 1.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 }
📌 ملاحظات
- buckets هدف؛ العدد الفعلي قد يكون أقل مع مستندات قليلة أو قيم مكررة
- معرف _id المخرج كائن حد { min, max } نصف مفتوح
- تنقر granularity الحدود على تسلسلات أرقام قانونية
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل عدد المجموعات دقيق؟
Aليس دائمًا؛ المستندات القليلة أو القيم المنحرفة يمكن أن تنتج مجموعات أقل من المطلوب.
Qماذا يفعل معامل granularity؟
Aينقر الحدود على تسلسلات قانونية مثل 1-2-5 أو E12 لعلامات تدرج قياسية.
Qهل يجب استخدام $bucketAuto أم $bucket؟
Aاختر $bucketAuto لمجموعات متساوية دون حدود يدوية؛ و$bucket لحدود مخصصة.