การใช้ $group เพื่อจัดกลุ่มตาม _id หรือนับจำนวนเอกสารทั้งหมด
> db.demo529.insertOne({"Score": 10});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d5bef4dcbee04fbbbe4") }
> db.demo529.insertOne({"Score": 20});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d5fef4dcbee04fbbbe5") }
> db.demo529.insertOne({"Score": 10});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d61ef4dcbee04fbbbe6") }
> db.demo529.insertOne({"Score": 10});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8b1d62ef4dcbee04fbbbe7") }
แสดงข้อมูล:
> db.demo529.find();
{ "_id" : ObjectId("5e8b1d5bef4dcbee04fbbbe4"), "Score" : 10 }
{ "_id" : ObjectId("5e8b1d5fef4dcbee04fbbbe5"), "Score" : 20 }
{ "_id" : ObjectId("5e8b1d61ef4dcbee04fbbbe6"), "Score" : 10 }
{ "_id" : ObjectId("5e8b1d62ef4dcbee04fbbbe7"), "Score" : 10 }
คิวรีจัดกลุ่ม _id = null (นับทั้งหมด)
> db.demo529.aggregate([
... { $group: { _id: null, count: { $sum: 1 } } }
... ]);
ผลลัพธ์:
รูปแบบ $group ที่ใช้บ่อย
| _id value | ความหมาย |
|---|---|
null | จัดกลุ่มทั้งหมดเป็น 1 กลุ่ม (นับรวม, sum รวม) |
"$fieldName" | จัดกลุ่มตามค่าของ fieldName |
{field1: "$field1", field2: "$field2"} | จัดกลุ่มตามหลายฟิลด์ (composite key) |