เพื่อนับจำนวนและหาผู้ใช้ที่มีการเกิดขึ้นมากที่สุด ให้ใช้ $group ร่วมกับ aggregate() ใน MongoDB
สร้างคอลเลกชันพร้อมเอกสาร (ชื่อซ้ำกัน):
> 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") }
แสดงเอกสารทั้งหมด:
> db.demo264.find();
ผลลัพธ์ - Chris 3 ครั้ง, Bob 2 ครั้ง, David 1 ครั้ง:
คำสั่ง Aggregation: $group จัดกลุ่มตาม Name นับจำนวนด้วย $sum:1, $sort เรียงจำนวนมากไปน้อย, $limit 5:
> db.demo264.aggregate( ... {$group : {_id : "$Name", "count" : {$sum : 1}}}, ... {$sort : {"count" : -1}}, ... {$limit : 5} ... )ผลลัพธ์ - เรียงตามจำนวนมากไปน้อย: Chris (3), Bob (2), David (1):