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

วิธีนับจำนวนเอกสารในอาร์เรย์ตามค่าของฟิลด์เฉพาะใน MongoDB

การจับคู่และนับด้วย $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 }