Mongodb: วิธีจัดกลุ่มตามและนับ


คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อจัดกลุ่มและนับใน MongoDB:

 db.collection.aggregate([
    { $group : { _id : " $field_name ", count :{ $sum :1}}}
])

โปรดทราบว่า field_name คือฟิลด์ที่คุณต้องการจัดกลุ่ม

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้กับ ทีม คอลเลกชันที่มีเอกสารต่อไปนี้:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", 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 :1}}}
])

สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:

 { _id: ' Forward ', count: 1 }
{ _id: ' Guard ', count: 3 }
{ _id: ' Center ', count: 1 }

สิ่งนี้บอกเรา:

  • ตำแหน่ง “เดินหน้า” ปรากฏ 1 ครั้ง
  • ตำแหน่ง “ยาม” ปรากฏ 3 ครั้ง
  • ตำแหน่ง “กลาง” ปรากฏ 1 ครั้ง

ตัวอย่างที่ 2: จัดกลุ่มตามและนับ (จากนั้นเรียงลำดับ)

เราสามารถใช้โค้ดต่อไปนี้เพื่อนับการเกิดขึ้นของแต่ละตำแหน่งและเรียง ลำดับผลลัพธ์โดยอัตโนมัติจากน้อยไปหามาก :

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum :1}}},
    { $sort : { count : 1}} 
])

สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:

 { _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }
{ _id: ' Guard ', count: 3 }

เราสามารถใช้ -1 ในอาร์กิวเมนต์การนับเพื่อเรียง ลำดับผลลัพธ์จากมากไปน้อย :

 db.teams.aggregate([
    { $group : { _id : " $position ", count :{ $sum :1}}},
    { $sort : { count :-1}} 
])

สิ่งนี้จะส่งกลับผลลัพธ์ต่อไปนี้:

 { _id: ' Guard ', count: 3 }
{ _id: ' Forward ', count: 1 }
{ _id: ' Center ', count: 1 }

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับ $group ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน MongoDB:

MongoDB: วิธีจัดกลุ่มตามและผลรวม
MongoDB: วิธีนับค่าที่แตกต่างกันในฟิลด์
MongoDB: วิธีจัดกลุ่มตามหลายฟิลด์

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *