Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

GROUP BY อาร์เรย์ของเอกสารเพื่อนับจำนวนค่า Age ที่ซ้ำกัน


เพื่อ GROUP BY อาร์เรย์ของเอกสาร ให้ใช้ $group มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

>db.demo559.insertOne({details:[{Name:"Chris",Age:21},{Name:"Bob",Age:22},{Name:"Carol", Age:21},{Name:"Sam",Age:21}]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5e8f38d954b4472ed3e8e866") }

แสดงเอกสารทั้งหมดจากคอลเลกชันด้วยเมธอด find()

> db.demo559.find().pretty();

จะได้ผลลัพธ์ดังนี้

{    "_id" : ObjectId("5e8f38d954b4472ed3e8e866"),    "details" : [       {          "Name" : "Chris",          "Age" : 21       },       {          "Name" : "Bob",          "Age" : 22       },       {          "Name" : "Carol",          "Age" : 21       },       {          "Name" : "Sam",          "Age" : 21       }    ] }

คำสั่งสำหรับ group by อาร์เรย์ของเอกสาร

> db.demo559.aggregate([ ...    { ...       "$unwind": "$details" ...    }, ...    { ...       "$group": { ...          "_id": "$details.Age", ...          "Count": { "$sum" : 1 } ...       } ...    }, ...    { "$sort": { "_id" : 1 } } ... ])

จะได้ผลลัพธ์ดังนี้

{ "_id" : 21, "Count" : 3 } { "_id" : 22, "Count" : 1 }