sql >> データベース >  >> NoSQL >> MongoDB

Mongoの集約パイプラインの$unwindフェーズ中に長さゼロの値を保持するにはどうすればよいですか?

    プロジェクトを変更します 以下のようにパイプラインのステージ:

    プロジェクション ステージは次の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"},
    ...
    ])
    



    1. MongoDB:コレクション内の数十億のドキュメント

    2. レール上のRedispub/ sub

    3. MongoDBの更新のためにevalなしでJavaScriptで動的変数名を使用するにはどうすればよいですか?

    4. フィールドがscalaキーワードの場合、JSONをケースクラスに自動的にマッピングするにはどうすればよいですか?