在Mongoose的聚合调用中填充引用文档的字段值

时间:2015-04-01 13:31:27

标签: node.js mongodb mongoose mongoose-populate

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

//用户模型

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架构的结果,以便我显示我的结果:   - {课程名称}({No_Of_Users_taken_Course})[例如课程A(15)]

History.aggregate([{
        $group: {"_id": {"primary": "$courseid"},
        "popularityCount": {$sum: 1}}},
        {$sort:{"popularityCount":-1}},
        {$project:{"_id":0,
            "courseid":"$_id.primary",
            "count":1}}
    ])

现在想通过它的引用填充课程标题中的课程标题,但是在浏览了聚合运算符列表(here)之后。我无法想办法这样做。

你能建议任何方法来填充其他馆藏的数据吗?

0 个答案:

没有答案