Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm user xuất hiện nhiều nhất trong MongoDB với Aggregation (tương đương COUNT)

Để đế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):