كيفية حساب المستندات باستخدام MongoDB Aggregate Count

Kyfyt Hsab Almstndat Bastkhdam Mongodb Aggregate Count



كما يوحي الاسم، يجب استخدام تجميع $count في MongoDB لحساب السجلات الميدانية. إحدى الطرق الشائعة لحساب السجلات هي استخدام طريقة count(). بالإضافة إلى ذلك، تتيح لك بعض عوامل تشغيل التجميع حساب السجلات التي تم جلبها من مرحلة سابقة من المسار التجميعي. في هذا الدليل اليوم، سنناقش تجميع عدد MongoDB باستخدام أمثلة التعليمات البرمجية.

مثال 01

لتنفيذ عملية $count في حقول مجموعة قاعدة البيانات في MongoDB، نحتاج إلى العديد من السجلات. لذلك، قمنا بإنشاء مجموعة باسم 'Test' وأدخلنا فيها 12 سجلًا في وقت واحد باستخدام وظيفة InsertMany(). الآن، تم عرض سجلات مجموعة 'الاختبار' هذه على MongoDB Shell عبر استعلام الدالة find(). يمكنك أن ترى أنه يحتوي على ثلاثة حقول:_id، والاسم، والنتيجة.

اختبار> db.Test.find({})







الآن، لتطبيق مرحلة $count على أي حقل، يجب علينا استخدام الدالة التجميعية لـ MongoDB ضمن تعليمات 'db'. تتكون الدالة التجميعية من بيان الحالة، غالبًا ما يستخدم عامل التشغيل $match في حقل معين، متبوعًا بحقل جديد يعرض العدد الإجمالي الذي تم الحصول عليه من حقل الشرط المحدد باستخدام عامل التشغيل $count.



في حالتنا، كنا نستخدم عامل التشغيل $match للبحث عن السجلات المطابقة للقيمة '60' في حقل النتيجة، بينما تم استخدام عامل التشغيل $count لحساب إجمالي عدد السجلات التي تم جلبها وعرضها ضمن حقل جديد اسمه 'SameScore'. كانت نتائج هذا الاستعلام تظهر حقل 'SameScore' بالقيمة '2' مما يشير إلى وجود سجلين بـ 'النتيجة' وقيمة '60' هي 2 في المجموعة 'اختبار'.



db.Test.aggregate([ { $match: { 'نتيجة' : 60 } }, { $count: 'SameScore' } ])

يمكنك أيضًا استخدام تجميع $count لحساب الحقول الأخرى غير الأرقام، مثل حقل 'الاسم' الخاص بمجموعة الاختبار. لقد كنا نستخدم تجميع المطابقة للبحث عن السجل في المجموعة حيث يحتوي حقل الاسم على القيمة 'جون'. نجح تجميع العدد في إحصاء العدد الإجمالي للسجلات المطابقة وهو 2.





db.Test.aggregate([ { $match: { 'اسم' : 'جون' } }, { $count: 'نفس الاسم' } ])

مثال 02

فلنقم بتحديث الاستعلام أعلاه وتطبيق شرط آخر للحصول على سجلات مختلفة. هذه المرة، سوف نقوم بتطبيق تجميع $match لحقل النتيجة للحصول على العدد الإجمالي للسجلات حيث تكون قيمة حقل النتيجة أقل من 30. سوف يقوم تجميع العد بحساب العدد الإجمالي للسجلات وإضافتها إلى سجل جديد العمود 'الدرجة د'. يُظهر الإخراج النتيجة '2' كرقم العد للقيمة المطابقة.

db.Test.aggregate( [ { $match: { النتيجة: { $lt: 30 } } }, { $count: 'الدرجة د' } ] )

يمكنك أيضًا استخدام تجميع $count أثناء تطبيق العوامل المنطقية لتنفيذ أكثر من شرط واحد في السجلات الميدانية. لذلك، تم تطبيق شرطين إجمالاً على حقل 'النتيجة' باستخدام عامل التشغيل $and: gte (أكبر من أو يساوي) وlte (أقل من ويساوي). يجب أن يكون كلا الشرطين صحيحا للحصول على النتيجة وحساب سجلاتها. يُظهر العدد الإجمالي وجود خمسة سجلات بمعايير المطابقة.



db.Test.aggregate( [ { $match: { '$و' : [ { 'نتيجة' : {$جت: 60 }}, { 'نتيجة' : {$lte: 80 }} ] }},

{ عدد $: 'درجة ب' } ] )

مثال 03

في الرسوم التوضيحية أعلاه، استخدمنا تجميع العدد للحصول فقط على عدد السجلات المطابقة لقيم حقل معينة، مثل النتيجة المحددة أو الاسم. تتيح لك طريقة التجميع في MongoDB الحصول على عدد جميع السجلات التي تحتوي على قيم مكررة في المجموعة.

لهذا، تحتاج إلى استخدام تجميع $group ضمن أمر الدالة التجميعية، على النحو التالي. تم استخدام الحقل _id لتحديد حقل 'الاسم' الذي سيعمل عليه تجميع العدد. بالإضافة إلى ذلك، سيستخدم الحقل المحدد من قبل المستخدم NameCount تجميع $count لحساب العديد من التكرارات في حقل 'الاسم'.

تم عرض مخرجات هذا الاستعلام بالأسفل. يحتوي على القيم من حقل 'الاسم' ورقم عددها ضمن حقل NameCount وفقًا لتكرارات القيم، مثل أن يكون لدى Cillian 4 تكرارات، وهكذا.

db.Test.aggregate([ { $group: { _id: 'اسم $' ، NameCount: { $count: {} }, }, }, ])

مثال 04

يمكننا أيضًا استخدام تجميع العدد في سجلات الحقول المتداخلة لحساب قيم حقول معينة. لتوضيح ذلك، أنشأنا مجموعة باسم 'Teacher' وأضفنا الحقل المتداخل 'sub' وحقل المصفوفة 'shift' بداخلها إلى جانب الحقول الأخرى: الاسم والدفع. تعرض وظيفة البحث () جميع السجلات الخمسة لهذه المجموعة.

اختبار> db.Teacher.find({})

الآن، قمنا بتطبيق الدالة التجميعية التي تحتوي على عامل المطابقة. أيضًا، تم تطبيق العامل $and على الحقل الفرعي 'math' للحقل 'sub'، والذي يحتوي على شرطين مختلفين. ثم تم حساب العدد. يُظهر الإخراج وجود سجلين حيث تحتوي رياضيات الحقل الفرعي على أكبر من 10 وأقل من 20 قيمة.

db.Teacher.aggregate( [ { $match: { '$و' : [ { 'الرياضيات الفرعية' : {$جت: 10 }}, { 'الرياضيات الفرعية' : {$lte: عشرين }} ] }}, { $count: 'الصف أ' } ] )

مثال 05

دعونا نلقي نظرة على المثال الأخير لتوضيح استخدام الدالة count() هذه المرة بدلاً من استخدام تجميع العدد. لذلك، تم تطبيق الدالة count() على حقل نوع المصفوفة في مجموعة 'Teacher'، أي 'shift'. باستخدام فهارس حقل المصفوفة باستخدام الفهرس 2، حددنا معايير المطابقة على أنها 'ليلة'. يتم إخراج '2' كإجمالي عدد الأعداد لإدخال 'الليلة'.

ديسيبل.Teacher.count({ 'التحول.2' : 'ليلة' })

بطريقة مشابهة جدًا، يمكن أيضًا تطبيق الدالة count() على الحقول المتداخلة، مثل الحقل الفرعي 'phy' للحقل 'sub' من المجموعة 'Teacher'. لقد حددنا معايير المطابقة باستخدام عامل التشغيل 'lte' الذي يشير إلى قيم أقل من 14 في الحقل الفرعي 'phy'. كان ناتج هذه التعليمات هو عرض '2' أي 4 سجلات بقيمة أقل من 14.

ديسيبل.Teacher.count( { 'sub.phy' : { $lte: 14 } })

خاتمة

يوضح هذا الدليل ويوضح استخدام تجميع $count لـ MongoDB مع العديد من أمثلة التعليمات البرمجية. تتضمن الأمثلة تضمين تجميع العدد لجلب رقم العدد لسجلات قيمة محددة وجميع السجلات الميدانية من خلال المجموعات. ويتضمن أيضًا استخدام تجميع العد في حقول المصفوفة والحقول المضمنة (المتداخلة). في النهاية، تم تضمين مثال الدالة count() لإحداث فرق بين استخدام تجميع العد ودالة العد.