การจับคู่และนับด้วย $match และ $group
ใช้ $match ใน MongoDB เพื่อกรองและนับเอกสารในอาร์เรย์ตามค่าของฟิลด์ที่ต้องการ
สร้างข้อมูลตัวอย่าง
> db.demo726.insertOne({
id:101,
"details": [
{ Name:"Chris" },
{ Name:"Chris" },
{ Name:"Bob" }
]
});
แสดงข้อมูลทั้งหมด
> db.demo726.find();
ผลลัพธ์:
{ "_id" : ObjectId("5eab318643417811278f5894"), "id" : 101, "details" : [ { "Name" : "Chris" }, { "Name" : "Chris" }, { "Name" : "Bob" } ] }
คิวรีนับจำนวนชื่อ "Chris" ในอาร์เรย์
> db.demo726.aggregate([
{ $unwind: '$details' },
{ $match: { 'details.Name': "Chris" } },
{ $group: {
_id: "$Name",
Total_Value: { $sum: 1 }
}}
]);
ผลลัพธ์
{ "_id" : null, "Total_Value" : 2 }