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

オブジェクトの配列で$lookupを使用する

    詳細を含むコレクションがvideo.detailsであると仮定すると、MongoDB3.2ではこのような方法でこれを行うことができます。 左結合しているフィールドは_idです。 :

    [  
       {  
          $unwind:"$videos"
       },
       {  
          $lookup:{  
             from:"video.details",
             localField:"videos.videoId",
             foreignField:"_id",
             as:"details"
          }
       },
       {  
          $group:{  
             _id:"$_id",
             name:{  
                $first:"$name"
             },
             videos:{  
                $push:{  
                   videoId:"$videos.videoId",
                   videoDetails:"$details"
                }
             }
          }
       }
    ]
    

    つまり、基本的にルックアップを実行しますが、後で$ groupステージで、好きな方法で出力を作成します。 MongoDB 3.3.4以降を使用している場合は、最初の$ unwindステージは必要ない場合があります(以前は、配列での$ lookupは許可されていませんでした)。




    1. MongoDB C#ドライバーを使用して、すべてのドキュメントから配列要素を削除します

    2. 1つのドキュメントの一部であるオブジェクトの配列から1つの要素を取得します(マングース)

    3. Mongodbがアドレスでの無効なアクセスでクラッシュしました-セグメンテーション違反信号11-バージョン2.6

    4. C#用のMongoDBドライバーで$addFieldsを使用する