我正在使用 Mongoose 3.6,我的(简化)模式看起来像这样
var commentSchema = new Schema({
created: Date
});
var userSchema = new Schema({
comments : [commentSchema],
});
我想对评论进行分页,这样如果我有一个有 25 条评论的用户,页面将分为:
page 1: comments 15-24
page 2: comments 5-14
page 3: comments 0-4
page 4: empty
page 5: empty
...
这是我尝试过的
this.findById(user_id, {
comments: {
$slice: [-comment_page_index * comments_per_page, comments_per_page]
}
}, function(err, user) {
//...
});
虽然起初这似乎有效,但我很失望地发现$slice
操作员会在达到集合边界时切断给出的索引。
所以我得到的是
page 1: comments 15-24
page 2: comments 5-14
page 3: comments 0-9
page 4: comments 0-9
page 5: comments 0-9
...
这里更好的选择可能是结合sort
,skip
和limit
函数,但是虽然我知道如何在常规集合中使用它们,但我必须知道如何将它们应用于子文档。有什么想法吗?