按Mongoose中的二级计算关系排序

时间:2015-09-25 09:28:22

标签: mongodb mongoose

我有以下架构:

var projectSchema = new Schema({
    user: { type: ObjectId, required: true, index: true, ref: 'user' },
    title: { type: String }
}, { versionKey: false });

var userSchema = new Schema({
    email: { type: String, required: true, unique: true },
    password: { type: String, required: true }
}, { versionKey: false });

var ratingSchema = new Schema({
    source_user: { type: ObjectId, required: true, index: true, ref: 'user' },
    destination_user: { type: ObjectId, required: true, index: true, ref: 'user' },
    vote: { type: String, required: true, enum: ['positive', 'negative'] }
}, { versionKey: false });

我想获得一个项目列表,这些项目按照拥有该项目的用户的评级排序。评级计算为positive_ratings / total_ratings

我能够用以下方式计算Mongo的评分:

db.getCollection('ratings').group({
    key: { destination_user: true },
    reduce: function(obj,prev) { prev.total_feedback += 1; if(obj.vote == 'positive') prev.positive_feedback += 1; prev.feedback = prev.positive_feedback / prev.total_feedback; },
    initial: { total_feedback: 0, positive_feedback: 0, feedback: 0 }
})

但我需要这些项目,所以我必须在Mongoose中进行,因为Mongo不知道关系。

在SQL中这很容易,但我对NoSQL并不擅长。这样的事情可能吗?

0 个答案:

没有答案