我有两个基本模式用户和课程
//用户模型
var UserSchema = new Schema({
userId: {
type: String,
default: '',
required: 'Please provide UserId.',
index : true
},
Name :{
type: String,
default: '',
trim : true
}
});
//课程架构
var CourseSchema = new Schema({
title: {
type: String,
default: '',
required: 'Please fill course title',
trim: true,
index: true
},
description: {
type: String,
default: '',
trim: true
},
category: {
type: String,
ref: 'Category',
index: true
}
});
以及用于存储每个用户的课程进度的UserCourseProgress模式。
var UserCourseProgress= new Schema({
userId: {
type: String,
ref:'User',
required: 'Please provide the User Id',
index:true
},
courseid: {
type: Schema.Types.ObjectId,
ref: 'Course',
required: 'Please provide the Course Id',
index: true
},
timespent: {
type: Number, //seconds
default: 0
},
score: {
type: Number
}
});
现在我必须在课程级别上通过 UserCourseProgress 模式汇总结果,以便我这样显示我的结果: - {Course Name}( {No_Of_Users_taken_Course} ) [例如 Course A (15) ]
History.aggregate([{
$group: {"_id": {"primary": "$courseid"},
"popularityCount": {$sum: 1}}},
{$sort:{"popularityCount":-1}},
{$project:{"_id":0,
"courseid":"$_id.primary",
"count":1}}
])
现在想通过其引用从课程模式中填充课程标题,但是在通过聚合运算符列表(此处)之后。我无法找到这样做的方法。
你能建议任何方法来填充其他集合中的数据吗?