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

mongodbで$lookupを使用して複数のコレクションに参加する方法

    Mongodb 3.2でサポートされている参加機能 以降のバージョン。 集計を使用して結合を使用できます クエリ。
    以下の例を使用して実行できます:

    db.users.aggregate([
    
        // Join with user_info table
        {
            $lookup:{
                from: "userinfo",       // other table name
                localField: "userId",   // name of users table field
                foreignField: "userId", // name of userinfo table field
                as: "user_info"         // alias for userinfo table
            }
        },
        {   $unwind:"$user_info" },     // $unwind used for getting data in object or for one record only
    
        // Join with user_role table
        {
            $lookup:{
                from: "userrole", 
                localField: "userId", 
                foreignField: "userId",
                as: "user_role"
            }
        },
        {   $unwind:"$user_role" },
    
        // define some conditions here 
        {
            $match:{
                $and:[{"userName" : "admin"}]
            }
        },
    
        // define which fields are you want to fetch
        {   
            $project:{
                _id : 1,
                email : 1,
                userName : 1,
                userPhone : "$user_info.phone",
                role : "$user_role.role",
            } 
        }
    ]);
    

    これにより、次のような結果が得られます:

    {
        "_id" : ObjectId("5684f3c454b1fd6926c324fd"),
        "email" : "[email protected]",
        "userName" : "admin",
        "userPhone" : "0000000000",
        "role" : "admin"
    }
    

    これがあなたや他の誰かに役立つことを願っています。

    ありがとう



    1. MongoDBセットアップの全文検索オプション

    2. 整数を挿入しようとすると、MongoDBはfloatを挿入します

    3. RedisセンチネルDockerイメージ/Dockerfile

    4. MongoDBグループとidをキーとして合計