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

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *