2

我有两个基本模式用户课程

//用户模型

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}}
    ])

现在想通过其引用从课程模式中填充课程标题,但是在通过聚合运算符列表(此处)之后。我无法找到这样做的方法。

你能建议任何方法来填充其他集合中的数据吗?

4

0 回答 0