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

$lookup結果のカウントmongodb

    完全な学生データを取得するには、次のようなことができます

    db.student.aggregate(
            [
                {
                $lookup:
                    {
                        from:"department",
                        localField:"branch",
                        foreignField:"_id",
                        as:"branch"
                    }
                }
            ]
        )
    

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

    {
        "_id" : 1.0,
        "rollNumber" : 110.0,
        "name" : "Thor",
        "branch" : [ 
            {
                "_id" : 1.0,
                "name" : "CSE",
                "hod" : "abc"
            }
        ]
    }
    

    各部門のstudentDataの数を取得するには

    db.getCollection('student').aggregate(
        [
            {
            $lookup:
                {
                    from:"department",
                    localField:"branch",
                    foreignField:"_id",
                    as:"branch"
                }
            },
            {
                $group:
                {
                    _id:"$branch",
                    "numOfStudent":{$sum:1},
                    "listOfStudents":{$push:"$name"}
                }
            }
        ]
    )
    

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

    {
        "_id" : [ 
            {
                "_id" : 2.0,
                "name" : "IT",
                "hod" : "xyz"
            }
        ],
        "numOfStudent" : 1.0,
        "listOfStudents" : [ 
            "Ironman2"
        ]
    }
    {
        "_id" : [ 
            {
                "_id" : 1.0,
                "name" : "CSE",
                "hod" : "abc"
            }
        ],
        "numOfStudent" : 3.0,
        "listOfStudents" : [ 
            "Thor", 
            "Ironman", 
            "Ironman3"
        ]
    }
    

    $push:$nameを変更できます $push:$_idへ 名前ではなく学生のIDを保存したい場合。

    編集 「Departments」コレクションを使用して同様の結果を取得します:

    db.department.aggregate([
    {
        $lookup:
                    {
                        from:"student",
                        localField:"students",
                        foreignField:"_id",
                        as:"studentsDetails"
                    }
    },
    {
        $project:{
                _id:0,
                name:"$name",
                hod:"$hod",
                numOfStudents:{$size:"$studentsDetails"},
                students:"$studentsDetails"
            }
    }
    ])
    

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

    {
        "name" : "CSE",
        "hod" : "abc",
        "numOfStudents" : 2,
        "students" : [ 
            {
                "_id" : 1.0,
                "rollNumber" : 110.0,
                "name" : "Thor",
                "branch" : 1.0
            }, 
            {
                "_id" : 3.0,
                "rollNumber" : 111.0,
                "name" : "Ironman2",
                "branch" : 2.0
            }
        ]
    }
    


    1. マングースは入力されたフィールドで並べ替えます

    2. mongodb集約ジョブのメモリ制限の増加

    3. 高可用性のためにMongoDBをデプロイする方法

    4. MongoDBでコレクションを作成する