Mongodb: كيفية التجميع والعد
يمكنك استخدام بناء الجملة التالي للتجميع والعد في MongoDB:
db.collection.aggregate([
{ $group : { _id : " $field_name ", count :{ $sum :1}}}
])
لاحظ أن field_name هو الحقل الذي تريد التجميع حسبه.
توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا مع فريق التحصيلات مع المستندات التالية:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
مثال 1: التجميع حسب والعد
يمكننا استخدام الكود التالي للتجميع حسب حقل “الموضع” وإحصاء تكرارات كل موضع.
db.teams.aggregate([
{ $group : { _id : " $position ", count :{ $sum :1}}}
])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Forward ', count: 1 }
{ _id: ' Guard ', count: 3 }
{ _id: ' Center ', count: 1 }
هذا يخبرنا:
- يظهر موضع “الأمام” مرة واحدة .
- يظهر وضع “الحارس” 3 مرات.
- يظهر موضع “المركز” مرة واحدة .
مثال 2: التجميع حسب والعد (ثم الفرز)
يمكننا استخدام الكود التالي لحساب تكرارات كل موضع وفرز النتائج تلقائيًا بترتيب تصاعدي :
db.teams.aggregate([
{ $group : { _id : " $position ", count :{ $sum :1}}},
{ $sort : { count : 1}}
])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }
{ _id: ' Guard ', count: 3 }
يمكننا استخدام -1 في وسيطة count لفرز النتائج بترتيب تنازلي :
db.teams.aggregate([
{ $group : { _id : " $position ", count :{ $sum :1}}},
{ $sort : { count :-1}}
])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Guard ', count: 3 }
{ _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }
ملاحظة : يمكنك العثور على الوثائق الكاملة لمجموعة $ هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية التجميع حسب والمجموع
MongoDB: كيفية حساب القيم المميزة في الحقل
MongoDB: كيفية التجميع حسب حقول متعددة