Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Đếm số document trong mảng lồng nhau MongoDB

Dùng $size và $cond trong $project để đếm phần tử mảng

Kết hợp $size (đếm phần tử mảng) và $cond (xử lý trường hợp không phải mảng) trong stage $project.

Dữ liệu lồng nhau

> db.demo332.insertOne({details: [{Name: "Chris", Age: 21}]});
> db.demo332.insertOne({details: [{Name: "David", Age: 23}, {Name: "Bob", Age: 22}]});

Pipeline đếm số phần tử

> db.demo332.aggregate([
    {
        $project: {
            numberOfDocuments: {
                $cond: {
                    if: { $isArray: "$details" },
                    then: { $size: "$details" },
                    else: "No Documents"
                }
            }
        }
    }
]);

Kết quả

{ "_id": ObjectId("..."), "numberOfDocuments": 1 }
{ "_id": ObjectId("..."), "numberOfDocuments": 2 }

Lưu ý: $size chỉ hoạt động trên mảng. $cond với $isArray bảo vệ trường hợp trường không tồn tại hoặc không phải mảng.