Ändern Sie Ihr project
Stufe in der Pipeline wie folgt:
Die projection
stage macht die folgenden zwei Dinge:
- Wenn das Items-Array
null
ist oderdoes not exist
, berechnet den Elementfeldwert als[]
(ein leeres Array.) - Als nächstes prüft, ob die
size
der gerade berechnetenitems
Feld ist0
, wenn es0
ist , ä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"},
...
])