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.