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: كيفية التجميع حسب حقول متعددة