プロジェクトを変更します 以下のようにパイプラインのステージ:
プロジェクションコード> ステージは次の2つのことを行います:
- items配列が
nullの場合 または存在しません、itemsフィールドの値を[]として計算します (空の配列。) - 次に、
sizeかどうかを確認します 計算されたばかりのitemsフィールドは0です 、0の場合 、次にその値をデフォルトオブジェクトの配列に変更します。
ステージコード:
db.MyCollection.aggregate([
...
{$project:{"_id":"$$ROOT",
"items":{$cond:[
{$eq:[{$size:{$ifNull:["$items",[]]}},0]},
[{"quantity":0,"price":0}],
"$items"
]}}},
{$unwind:"$items"},
...
])