Zmodyfikuj swój project
etap w potoku jak poniżej:
projection
etap wykonuje następujące dwie rzeczy:
- Jeśli tablica elementów ma wartość
null
lubdoes not exist
, oblicza wartość pola elementu jako[]
(pusta tablica.) - Dalej sprawdza, czy
size
właśnie obliczonychitems
pole to0
, jeśli to0
, a następnie zmienia jego wartość na tablicę z domyślnym obiektem.
Kod etapu:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])