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

Query ขนาด Internal Array ใน MongoDB ด้วย $size

ใช้ Operator $size ใน Aggregation Pipeline เพื่อหาขนาดของ Internal Array (Array ภายใน Document)

ไวยากรณ์


db.internalArraySizeDemo.aggregate([
    {
        $group: {
            _id: yourObjectIdValue,
            anyFieldName: {$first: {$size: "$yourArrayName"}}
        }
    }
]);

สร้างข้อมูลตัวอย่าง


> db.internalArraySizeDemo.insertOne({"EmployeeName":"Mike","EmployeeTechnology":["Java Web Development","Python Web Development"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6eff586fd07954a48906b2") }
> db.internalArraySizeDemo.insertOne({"EmployeeName":"Sam","EmployeeTechnology":["C with Graphics","Game Development with C++ Language","MatLab"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5c6effcd6fd07954a48906b3") }

แสดงเอกสารทั้งหมด


> db.internalArraySizeDemo.find().pretty();

Query ขนาด Array ของ EmployeeName = Mike (_id เฉพาะ)


> db.internalArraySizeDemo.aggregate([
    {
        $group: {
            _id: ObjectId("5c6eff586fd07954a48906b2"),
            EmployeeTechnology_count: {$first: {$size: "$EmployeeTechnology"}}
        }
    }
]);

ผลลัพธ์


{ "_id" : ObjectId("5c6eff586fd07954a48906b2"), "EmployeeTechnology_count" : 2 }

ใช้ $first ร่วม $size เพราะ $group ต้องการ Accumulator $size ใช้ใน $project หรือ $match ได้โดยตรง แต่ใน $group ต้องห่อด้วย Accumulator