คุณสามารถใช้ $group ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo659.insertOne({Name:"Chris",CountryName:"US","Marks":50}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50724113ea5458c7cf9") } > db.demo659.insertOne({Name:"David",CountryName:"US","Marks":60}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50724113ea5458c7cfa") } > db.demo659.insertOne({Name:"Mike",CountryName:"US","Marks":55}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50724113ea5458c7cfb") } > db.demo659.insertOne({Name:"Chris",CountryName:"UK","Marks":75}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50724113ea5458c7cfc") } > db.demo659.insertOne({Name:"David",CountryName:"UK","Marks":54}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50724113ea5458c7cfd") } > db.demo659.insertOne({Name:"Mike",CountryName:"UK","Marks":72}); { "acknowledged" : true, "insertedId" : ObjectId("5ea1a50824113ea5458c7cfe") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo659.find();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ พบคะแนนสูงสุดจากแต่ละรายการเช่น CountryName US และ UK -
{ "_id" : ObjectId("5ea1a50724113ea5458c7cf9"), "Name" : "Chris", "CountryName" : "US", "Marks" : 50 } { "_id" : ObjectId("5ea1a50724113ea5458c7cfa"), "Name" : "David", "CountryName" : "US", "Marks" : 60 } { "_id" : ObjectId("5ea1a50724113ea5458c7cfb"), "Name" : "Mike", "CountryName" : "US", "Marks" : 55 } { "_id" : ObjectId("5ea1a50724113ea5458c7cfc"), "Name" : "Chris", "CountryName" : "UK", "Marks" : 75 } { "_id" : ObjectId("5ea1a50724113ea5458c7cfd"), "Name" : "David", "CountryName" : "UK", "Marks" : 54 } { "_id" : ObjectId("5ea1a50824113ea5458c7cfe"), "Name" : "Mike", "CountryName" : "UK", "Marks" : 72 }
ต่อไปนี้เป็นแบบสอบถามเพื่อเลือกรายการสูงสุดในแต่ละกลุ่ม -
> db.demo659.aggregate( { $group: { ... _id: {CountryName: "$CountryName" }, ... 'MaxMarks': { $max : "$Marks" } ... }})
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : { "CountryName" : "UK" }, "MaxMarks" : 75 } { "_id" : { "CountryName" : "US" }, "MaxMarks" : 60 }