MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

số lượng mongodb kết quả tra cứu $

Để có được dữ liệu sinh viên đầy đủ, bạn có thể làm điều gì đó như

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

Điều này sẽ cung cấp cho bạn một cái gì đó như thế này:

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

Để nhận số lượng Dữ liệu sinh viên cho từng Khoa

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

Điều này sẽ cung cấp cho bạn một cái gì đó như thế này:

{
    "_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"
    ]
}

Bạn có thể thay đổi $push:$name tới $push:$_id Nếu bạn muốn lưu trữ Id của sinh viên chứ không phải tên của họ.

CHỈNH SỬA Nhận kết quả tương tự bằng cách sử dụng bộ sưu tập "Phòng ban":

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

Điều này sẽ cung cấp cho bạn một cái gì đó như thế này:

{
    "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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhà điều hành đường ống tổng hợp MongoDB $ max

  2. Có chạy mongoskin chỉ với mongodb phiên bản 1.4 trở lên không?

  3. Chuyển đổi chuỗi thành ObjectID trong MongoDB

  4. Tại sao MongoDB không còn cho phép sử dụng $ set và $ unset với một tài liệu trống?

  5. NodeJS - MongoDB:sử dụng kết nối mở