Ändern Sie Ihr project Stufe in der Pipeline wie folgt:
Die projection stage macht die folgenden zwei Dinge:
- Wenn das Items-Array
nullist oderdoes not exist, berechnet den Elementfeldwert als[](ein leeres Array.) - Als nächstes prüft, ob die
sizeder gerade berechnetenitemsFeld ist0, wenn es0ist , ändert dann seinen Wert in ein Array mit dem Standardobjekt.
Phasencode:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])