Sửa đổi project của bạn giai đoạn trong quy trình như sau:
Phép chiếu projection giai đoạn thực hiện hai điều sau:
- Nếu mảng các mục là
nullhoặcdoes not exist, tính toán giá trị trường theitems dưới dạng[](một mảng trống.) - Tiếp theo, hãy kiểm tra xem
sizetrong số các mụcprojectionvừa được tính toán trường là0, ifit là0, sau đó thay đổi giá trị của nó thành một mảng có đối tượng mặc định.
Mã sân khấu:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])