Mongoose Find()然后限制嵌入文档

时间:2016-03-11 17:33:29

标签: node.js mongodb mongoose

每个帖子都有评论,用户可以喜欢'一条评论。我想要实现的是当用户查看帖子评论时,他们将能够看到他们喜欢并且当前不喜欢的评论(允许喜欢和不同于任何评论)

评论架构:

// ====================
// Comment Likes Schema
// ====================

var CommentLikes = new Schema({
    userId:String,
    commentId:String
})

// ==============
// Comment Schema
// ==============

var CommentSchema = new Schema({
    postId:String,
    authorId:String,
    authorUsername:String,
    authorComment:String,
    likes:[CommentLikes],
    created: {
        type: Date,
        default: Date.now
    },
});

// Comment Model
var Comment = mongoose.model('Comment', CommentSchema, 'comment');

这似乎是使用嵌入式文档处理评论喜欢的最佳方式。

目前我正在选择所有帖子评论,如下:

Comment.find({ postId:req.params.postId }).sort({ _id: -1 }).limit(20)
.exec(function (err, comments) {
    if(err) throw err

    // === Assuming Comment Likes Logic Here

    // Return
    return res.send({
        comments:comments,
    })
})

目前,无论当前用户ID如何,我都会将所有相关内容返回。如果评论有50k喜欢,那么将所有喜欢的内容发回肯定会效率低下,因此我希望得到所有评论,但只有登录用户创建的喜欢(使用userId)。最有效的方法是什么?我的第一个想法是只运行另一个发现并让他们这样做?但我当然可以不在父级上运行find()然后限制嵌入式文档

0 个答案:

没有答案