Променете своя project
етап в тръбопровода, както е показано по-долу:
projection
stage прави следните две неща:
- Ако масивът от елементи е
null
илиdoes not exist
, изчислява стойността на полето theitems като[]
(празен масив.) - Следва проверка дали
size
от току-що изчисленитеitems
полето е0
, ако е0
, след което променя стойността си на масив с обект по подразбиране.
Код на етапа:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])