Wijzig uw project fase in de pijplijn zoals hieronder:
De projection stage doet de volgende twee dingen:
- Als de itemsarray
nullis ofdoes not exist, berekent de waarde van het itemveld als[](een lege array.) - Controleert vervolgens of de
sizevan de zojuist berekendeitemsveld is0, als het0is en verandert vervolgens de waarde in een array met standaardobject.
Stagecode:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])