اذهب إلى المحتوى

السؤال

نشر

لدي مستندات بالشكل التالي:

{
	"_id" : ObjectId("fc1054ffa7540f346c3e7086"),
    "username" : "betman999",
    "role" : "User",
	"__v" : 0
}

كيف يمكنني إيجاد جميع المستندات التي لها نفس قيمة الحقل username؟ أي طباعة المستخدمين الذين لهم نفس اسم المستخدم

Recommended Posts

  • 0
نشر

يمكن ذلك من خلال تطبيق aggregate:

db.collection.aggregate([
    {"$group" : { "_id": "$username", "count": { "$sum": 1 } } },
    {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, 
    {"$project": {"username" : "$_id", "_id" : 0} }
]);

سيتم من خلال الاستدعاء السابق جلب جميع المستندات التي تعداد تجميع الخاصية username لها أكبر من 1

  • 0
نشر

يمكنك الحصول على قائمة الأسماء المكررة بعمل aggregate

  • تجميع Group كل السجلات الذي لها نفس قيمة الحقل username
  • مطابقة Match هذه المجموعات groups الي لديها سجلات أكبر من 1
  • ثم تجميع group مرةً أخرى الى project كل الأسماء المكررة كمصفوفة array

الكود

db.collection.aggregate([
{$group:{"_id":"$username","name":{$first:"$username"},"count":{$sum:1}}},
{$match:{"count":{$gt:1}}},
{$project:{"name":1,"_id":0}},
{$group:{"_id":null,"duplicateNames":{$push:"$username"}}},
{$project:{"_id":0,"duplicateNames":1}}
])

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...