db.studentSeminar.insert({
seminar: {
seminarID: "sem001",
seminarDescription: "Security in Databases.",
seminarDate: "25-April-2020",
prerequisite: "Year 3 standing",
creditPoint: 3,
seminarEnrolment: [
{ studentID: "std001", enrolmentDate: "14-April-2020" },
{ studentID: "std009", enrolmentDate: "18-April-2020" },
],
},
student: [
{
studentID: "std001",
studentName: "Richard Davis",
address: "Block 140, Bukit Batok",
telephone: [{ handphone: "92378888", officephone: "64283333" }],
enrolTo: [{ seminarID: "sem001", markReceived: 78 }],
},
{
studentID: "std009",
studentName: "Sharon Smith",
address: "10 Bukit Timah Road",
telephone: [{ handphone: "81881234", residentphone: "64123456" }],
enrolTo: [{ seminarID: "sem001", markReceived: 80 }],
},
],
});
db.studentSeminar.insert({
seminar: {
seminarID: "sem002",
seminarDescription: "Concurrency in Distributed Database.",
seminarDate: "5-May-2020",
creditPoint: 2,
seminarEnrolment: [
{ studentID: "std006", enrolmentDate: "30-April-2020" },
{ studentID: "std009", enrolmentDate: "18-April-2020" },
],
},
student: [
{
studentID: "std006",
studentName: "Ofelia Ashley",
address: "123, Bukit Timah",
telephone: [{ handphone: "93858134", residentphone: "64352893" }],
enrolTo: [{ seminarID: "sem002", markReceived: 79 }],
},
{
studentID: "std009",
studentName: "Sharon Smith",
address: "10 Bukit Timah Road",
telephone: [{ handphone: "81881234", residentphone: "64123456" }],
enrolTo: [{ seminarID: "sem002", markReceived: 82 }],
},
],
});
给出上述文件集合。
假设我想找出一个学生参加了多少次研讨会,在mongoDB中使用find或汇总会更好吗?
这是我尝试过的db.studentSeminar.find({“ seminar.seminarEnrollment.studentID”:“ $ value”})但没有返回任何内容
提前谢谢您
您必须使用汇总才能实现此目的。
以下查询将有所帮助:
db.studentSeminar.aggregate([
{
$project: {
seminarID: "$seminar.seminarID",
studentsAttendedCount: {
$size: "$seminar.seminarEnrolment"
}
}
}
])
输出:
[
{
"_id": ObjectId("5a933XXXX500YY0Z"),
"seminarID": "sem001",
"studentsAttendedCount": 2
},
{
"_id": ObjectId("5a934XXXX50YY00Z"),
"seminarID": "sem002",
"studentsAttendedCount": 2
}
]
您可以了解有关$size
运算符here和$project
运算符here的更多信息。
注意:您可以使用$project
运算符来投影其他字段。