我有两个模式学生,用户 - 用户可以是班主任或其他指定人员。
学生架构
var StudentSchema = new Schema({
name : String,
.
.
.
owner: {
type: Schema.ObjectId,
ref: 'User'
}
})
现在我想将学生分组为特定的所有者。(classTeacher)
我为此编写了一个服务器api route -method。
get ==> localhost:3000/api/---/user/:userId/students
userId是classTeacherid. = req.queryUserStudentsId
exports.getUserStudents=function(req,res){
Student
.find()
.select({
'owner': {
$elemMatch: {
_id: req.queryUserStudentsId
}
}
})
.populate('owner')
.exec(function(err, students) {
};
这导致所有学生。不仅属于给定的所有者ID。
请告诉我错误的地方。
感谢。
答案 0 :(得分:2)
select
用于选择要包含在返回文档中的字段。您需要向owner
本身提供find
过滤器,以便将学生文档过滤为req.queryUserStudentsId
所拥有的文档:
Student.find({owner: req.queryUserStudentsId})
.populate('owner')
.exec(function(err, students) {
...
});
如果您不需要所有者的完整详细信息,则可以省略.populate('owner')
来电。