Mongodb: كيفية التجميع حسب والمجموع
يمكنك استخدام بناء الجملة التالي للتجميع والعد في MongoDB:
db.collection.aggregate([ { $group : { _id : " $field_name1 ", count :{ $sum : " $field_name2 "}}} ])
لاحظ أن field_name1 هو الحقل الذي تريد التجميع حسبه و field_name2 هو الحقل الذي تريد جمعه.
توضح الأمثلة التالية كيفية استخدام بناء الجملة هذا مع فريق التحصيلات مع المستندات التالية:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Forward ", 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 : " $points "}}} ])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Forward ', count: 48 } { _id: ' Guard ', count: 64 } { _id: ' Center ', count: 19 }
هذا يخبرنا:
- اللاعبون في مركز “المهاجم” لديهم إجمالي 48 نقطة.
- اللاعبون الذين يتمتعون بمركز “الحارس” لديهم إجمالي 64 نقطة.
- اللاعبون في مركز “الوسط” لديهم إجمالي 19 نقطة.
مثال 2: التجميع حسب والإضافة (ثم الفرز)
يمكننا استخدام الكود التالي للعثور على مجموع النقاط لكل موضع وفرز النتائج تلقائيًا بترتيب تصاعدي :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum : " $points "}}}, { $sort : { count : 1}} ])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Center ', count: 19 } { _id: ' Forward ', count: 48 } { _id: ' Guard ', count: 64 }
يتم فرز النتائج حسب النقاط بترتيب تصاعدي (من الأصغر إلى الأكبر).
يمكننا استخدام -1 في وسيطة count لفرز النتائج بترتيب تنازلي :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum : " $points "}}}, { $sort : { count :-1}} ])
يؤدي هذا إلى إرجاع النتائج التالية:
{ _id: ' Guard ', count: 64 } { _id: ' Forward ', count: 48 } { _id: ' Center ', count: 19 }
لاحظ أنه يتم فرز النتائج حسب النقاط بترتيب تنازلي (من الأكبر إلى الأصغر).
ملاحظة : يمكنك العثور على الوثائق الكاملة لمجموعة $ هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية حساب القيم المميزة في الحقل
MongoDB: كيفية التجميع حسب حقول متعددة
MongoDB: كيفية التجميع والعد