كيفية العثور على التكرارات في mongodb
يمكنك استخدام بناء الجملة التالي للعثور على المستندات ذات القيم المكررة في MongoDB:
db.collection.aggregate([
{" $group ": { "_id": " $field1 ", "count": { " $sum ": 1 } } },
{" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } },
{" $project ": {"name": " $_id ", "_id": 0} }
])
إليك ما يفعله بناء الجملة هذا:
- قم بتجميع كافة المستندات بنفس القيمة في الحقل 1
- مطابقة المجموعات التي لديها أكثر من وثيقة واحدة
- قم بعرض جميع المجموعات التي لديها أكثر من مستند واحد
يبحث هذا الاستعلام المحدد عن قيم مكررة في العمود field1 . ما عليك سوى تعديل هذه القيمة لتغيير الحقل المراد البحث فيه.
يوضح المثال التالي كيفية استخدام هذه الصيغة مع فريق التحصيل بالمستندات التالية:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Rockets ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
مثال: ابحث عن المستندات ذات القيم المكررة
يمكننا استخدام الكود التالي للعثور على جميع القيم المكررة في عمود “الفريق”:
db.teams.aggregate([
{" $group ": { "_id": " $team ", "count": { " $sum ": 1 } } },
{" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } },
{" $project ": {"name": " $_id ", "_id": 0} }
])
يقوم هذا الاستعلام بإرجاع النتائج التالية:
{ name: 'Rockets' }
{ name: 'Mavs' }
يخبرنا هذا أن قيمتي “Rockets” و”Mavs” تظهران عدة مرات في حقل “team”.
لاحظ أنه يمكننا ببساطة استبدال $team بـ $position للبحث عن القيم المكررة في حقل “position” بدلاً من ذلك:
db.teams.aggregate([
{" $group ": { "_id": " $position ", "count": { " $sum ": 1 } } },
{" $match ": {"_id" :{ " $ne " : null } , "count" : {" $gt ": 1} } },
{" $project ": {"name": " $_id ", "_id": 0} }
])
يقوم هذا الاستعلام بإرجاع النتائج التالية:
{ name: 'Guard' }
يخبرنا هذا أن كلمة “Guard” تظهر عدة مرات في حقل “الموضع”.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في MongoDB:
MongoDB: كيفية إضافة حقل جديد إلى المجموعة
MongoDB: كيفية التجميع والعد
MongoDB: كيفية التجميع حسب حقول متعددة