Modifica il tuo project
fase in cantiere come di seguito:
La projection
stage fa le seguenti due cose:
- Se l'array degli elementi è
null
odoes not exist
, calcola il valore del campo degli elementi come[]
(un array vuoto.) - Avanti controlla se la
size
degliitems
appena calcolati il campo è0
, se è0
, quindi cambia il suo valore in un array con oggetto predefinito.
Codice stadio:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])