Променете своя 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"},
...
])