我有这个模型(使用mongoose):
var StudentSchema = new mongoose.Schema({
name: String,
address: String,
phones: [{
name: String,
address: String
}]
});
var subjectSchema = new mongoose.Schema({
name: String,
students: [{
type: mongoose.Schema.Types.ObjectId,
ref:'Student'
}]
});
我希望能够在一个主题下获得一个特定的学生详细信息。我试过这个:
router.get('/:id/students/:idstudent', function(req, res, next) {
Subject.findById(req.params.id)
.where('students', {
$elemMatch: {
$eq: req.params.idstudent
}
})
.exec(function (err, post) {
if (err) {
return next(err);
}
res.json(post.students);
});
});
但即使打印出我正在寻找的学生,也要打印与他同一科目的所有其他学生。我希望能够只从studentId获得详细信息。
答案 0 :(得分:0)
where
需要$elemMatch
个查询,
使用select
指定$elemMatch
投影。
router.get('/:id/students/:idstudent', function(req, res, next) {
Subject.findById(req.params.id)
.select({'students': {$elemMatch: {$eq: req.params.idstudent}}}
.populate('students')
.exec(function (err, post) {
if (err) return next(err);
res.json(post.students);
});
});