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
null
nebodoes not exist
, vypočítá hodnotu pole položek jako[]
(prázdné pole.) - Dále zkontroluje, zda
size
z právě vypočítanýchitems
pole 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"},
...
])