Upravte svůj project fáze v potrubí, jak je uvedeno níže:
projection stage dělá následující dvě věci:
- Pokud je pole položek
nullnebodoes not exist, vypočítá hodnotu pole položek jako[](prázdné pole.) - Dále zkontroluje, zda
sizez právě vypočítanýchitemspole je0, pokud je0, pak změní jeho hodnotu na pole s výchozím objektem.
Kód fáze:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])