Mongodb: วิธีจัดกลุ่มตามและผลรวม
คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจัดกลุ่มและนับใน MongoDB:
db.collection.aggregate([ { $group : { _id : " $field_name1 ", count :{ $sum : " $field_name2 "}}} ])
โปรดทราบว่า field_name1 คือฟิลด์ที่คุณต้องการจัดกลุ่มและ field_name2 คือฟิลด์ที่คุณต้องการหาผลรวม
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้กับ ทีม คอลเลกชันที่มีเอกสารต่อไปนี้:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Forward ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
ตัวอย่างที่ 1: จัดกลุ่มตามและผลรวม
เราสามารถใช้โค้ดต่อไปนี้เพื่อจัดกลุ่มตามช่อง “ตำแหน่ง” และนับผลรวมคะแนนสำหรับแต่ละตำแหน่ง
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum : " $points "}}} ])
สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ' Forward ', count: 48 } { _id: ' Guard ', count: 64 } { _id: ' Center ', count: 19 }
สิ่งนี้บอกเรา:
- ผู้เล่นในตำแหน่ง “ผู้โจมตี” มีทั้งหมด 48 แต้ม
- ผู้เล่นที่มีตำแหน่ง “การ์ด” มีทั้งหมด 64 แต้ม
- ผู้เล่นในตำแหน่ง “เซ็นเตอร์” มีทั้งหมด 19 แต้ม
ตัวอย่างที่ 2: จัดกลุ่มตามและเพิ่ม (จากนั้นเรียงลำดับ)
เราสามารถใช้โค้ดต่อไปนี้เพื่อค้นหาผลรวมของคะแนนสำหรับแต่ละตำแหน่งและเรียง ลำดับ ผลลัพธ์โดยอัตโนมัติจากน้อยไปหามาก:
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum : " $points "}}}, { $sort : { count : 1}} ])
สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ' Center ', count: 19 } { _id: ' Forward ', count: 48 } { _id: ' Guard ', count: 64 }
ผลลัพธ์จะจัดเรียงตามจุด ตามลำดับ จากน้อยไปหามาก (จากน้อยไปหามาก)
เราสามารถใช้ -1 ในอาร์กิวเมนต์การนับเพื่อเรียง ลำดับผลลัพธ์จากมากไปน้อย :
db.teams.aggregate([ { $group : { _id : " $position ", count :{ $sum : " $points "}}}, { $sort : { count :-1}} ])
สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:
{ _id: ' Guard ', count: 64 } { _id: ' Forward ', count: 48 } { _id: ' Center ', count: 19 }
โปรดทราบว่าผลลัพธ์จะจัดเรียงตามจุด ตามลำดับ จากมากไปน้อย (มากไปน้อย)
หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับ $group ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:
MongoDB: วิธีนับค่าที่แตกต่างกันในฟิลด์
MongoDB: วิธีจัดกลุ่มตามหลายฟิลด์
MongoDB: วิธีจัดกลุ่มตามและนับ