Mongodb Mongoose中的子文档分页
我使用的是Mongoose3.6,我的(简化的)模式如下所示Mongodb Mongoose中的子文档分页,mongodb,pagination,mongoose,Mongodb,Pagination,Mongoose,我使用的是Mongoose3.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: co
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和$limit。这似乎是一种可行的方法。如果你想举个例子,并把它写在一个答案中,我将不胜感激:)无论如何,我会自己尝试