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

ใช้ $size ใน MongoDB Aggregation เพื่อหาความยาวอาร์เรย์

ใช้ $project ร่วม $size เพื่อนับจำนวนองค์ประกอบในอาร์เรย์ (ไม่ต้อง $unwind)

ตัวอย่างข้อมูลทดสอบ

> db.demo382.insertOne({
    "Name" : "David",
    "details" : [
        {"SubjectName":"MySQL"},
        {"SubjectName":"MongoDB"},
        {"SubjectName":"Java"}
    ]
});

แสดงข้อมูล

> db.demo382.find().pretty();
{
    "_id" : ObjectId("5e5b5e1c22064be7ab44e7f0"),
    "Name" : "David",
    "details" : [
        {"SubjectName" : "MySQL"},
        {"SubjectName" : "MongoDB"},
        {"SubjectName" : "Java"}
    ]
}

คำสั่ง Aggregation นับจำนวน details

> db.demo382.aggregate([
    {"$match": {"Name": "David"}},
    {"$project": {"count": {"$size": "$details"}}}
])

ผลลัพธ์

{ "_id" : ObjectId("5e5b5e1c22064be7ab44e7f0"), "count" : 3 }

สรุป: $size คืนจำนวนองค์ประกอบในอาร์เรย์ได้ทันที ใช้ใน $project, $match, $addFields ฯลฯ ไม่ต้อง $unwind แล้ว $group นับ (เร็วกว่ามาก)