Modifiez votre project
étape dans le pipeline comme ci-dessous :
La projection
stage fait les deux choses suivantes :
- Si le tableau des éléments est
null
oudoes not exist
, calcule la valeur du champ items comme[]
(un tableau vide.) - Vérifie ensuite si la
size
desitems
juste calculés le champ est0
, si c'est0
, puis remplace sa valeur par un tableau avec un objet par défaut.
Code d'étape :
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])