Modifica tu project
etapa en la canalización de la siguiente manera:
La projection
etapa hace las siguientes dos cosas:
- Si la matriz de elementos es
null
odoes not exist
, calcula el valor del campo de elementos como[]
(una matriz vacía). - A continuación, comprueba si el
size
de lositems
recién calculados el campo es0
, si es0
, luego cambia su valor a una matriz con el objeto predeterminado.
Código de etapa:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])