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

จัดกลุ่ม (Group By) ตาม _id ใน MongoDB Aggregation

การใช้ $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 ที่ใช้บ่อย

Accumulator Operators ใน $group

  • $sum - ผลรวม / นับจำนวน
  • $avg - ค่าเฉลี่ย
  • $min / $max - ค่าต่ำสุด/สูงสุด
  • $first / $last - ค่าแรก/สุดท้ายในกลุ่ม
  • $push / $addToSet - สร้างอาร์เรย์ค่าทั้งหมด / ค่าที่ไม่ซ้ำ
_id valueความหมาย
nullจัดกลุ่มทั้งหมดเป็น 1 กลุ่ม (นับรวม, sum รวม)
"$fieldName"จัดกลุ่มตามค่าของ fieldName
{field1: "$field1", field2: "$field2"}จัดกลุ่มตามหลายฟิลด์ (composite key)