Modifique seu
project estágio no pipeline como abaixo:A
projection stage faz as duas coisas a seguir:- Se a matriz de itens for
nulloudoes not exist, calcula o valor do campo de itens como[](uma matriz vazia.) - Em seguida, verifica se o
sizedositemsrecém-calculados campo é0, se for0, altera seu valor para uma matriz com objeto padrão.
Código do palco:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])