Để đếm số lần xuất hiện và tìm top user, sử dụng $group với $sum trong aggregation pipeline.
Tạo collection với tên lặp lại:
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed441627c0c63e7dba9e") }
> db.demo264.insertOne({"Name":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed471627c0c63e7dba9f") }
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed491627c0c63e7dbaa0") }
> db.demo264.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed4c1627c0c63e7dbaa1") }
> db.demo264.insertOne({"Name":"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed4e1627c0c63e7dbaa2") }
> db.demo264.insertOne({"Name":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e47ed531627c0c63e7dbaa3") }
Hiển thị dữ liệu (Chris: 3, Bob: 2, David: 1):
> db.demo264.find();
Aggregation: $group theo Name đếm số lượng, $sort giảm dần, $limit top 5:
> db.demo264.aggregate( ... {$group : {_id : "$Name", "count" : {$sum : 1}}}, ... {$sort : {"count" : -1}}, ... {$limit : 5} ...)Kết quả top user: Chris (3), Bob (2), David (1):