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

Add a Comment

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