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
nullodoes not exist, calcula el valor del campo de elementos como[](una matriz vacía). - A continuación, comprueba si el
sizede lositemsrecié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"},
...
])