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