【发布时间】:2018-11-25 21:45:48
【问题描述】:
我是 MongoDB 的初学者,我发现 Aggregate 函数很难理解。
我阅读了很多主题并尝试了很多东西,但是我无法获得我想要的结果。
实际上,我有两个架构:
1) Faculty.js
const FacultySchema = new Schema({
name: {
type: String,
required: true
}
});
2) Semester.js
const SemesterSchema = new Schema({
name: {
type: String,
required: true
},
faculty: {
type: Schema.Types.ObjectId,
ref: 'faculties'
}
});
学期合集
[
{
"_id": ObjectId("5bf82da745209d0d48a91b62"),
"name": "1st Semester",
"faculty": ObjectId("5bf7f39a1972dd0b6c74de7d"),
"__v": 0
},
{
"_id": ObjectId("5bf8c3f945209d0d48a91b63"),
"name": "2nd Semester",
"faculty": ObjectId("5bf7f39a1972dd0b6c74de7d"),
"__v": 0
},
{
"_id": ObjectId("5bf8c3fe45209d0d48a91b64"),
"name": "3rd Semester",
"faculty": ObjectId("5bf7f39a1972dd0b6c74de7d"),
"__v": 0
},
{
"_id": ObjectId("5bf8c40345209d0d48a91b65"),
"name": "4th Semester",
"faculty": ObjectId("5bf7f39a1972dd0b6c74de7d"),
"__v": 0
}
]
我想将所有这些学期分组为一个在一个地方具有相同教员 ID 的数组。 比如:
[
{faculty: "BBA", semesters: ['first', 'second', 'third']},
{faculty: "BCA", semesters: ['first', 'second', 'third']}
];
我怎样才能做到这一点??
【问题讨论】:
-
您能否发布来自
Faculty和Semesters集合的示例文档 -
部分院系样本:{ "_id" : ObjectId("5bf82da745209d0d48a91b62"), "name" : "1st Semester", "faculty" : ObjectId("5bf7f39a1972dd0b6c74de7d"), "__v" : 0 } {“_id”:ObjectId(“5bf8c3f945209d0d48a91b63”),“名称”:“第二学期”,“教师”:ObjectId(“5bf7f39a1972dd0b6c74de7d”),“__v”:0 } {“_id”:ObjectId(“5bf8c3fe454”488b16d ),“名称”:“第三学期”,“教师”:ObjectId(“5bf7f39a1972dd0b6c74de7d”),“__v”:0 } {“_id”:ObjectId(“5bf8c40345209d0d48a91b65”),“名称”:“第四学期”,“教师”:ObjectId(“5bf7f39a1972dd0b6c74de7d”),“__v”:0}
-
在这里我可以填充“学院”以访问学院集合中的所有字段。我想要的是对于所有不同的学院,我必须找到具有相同学院 ID 的学期数组。
标签: mongodb mongoose mongodb-query aggregation-framework