在mongodb中实现具有总页面的嵌入式分页

时间:2012-02-16 15:30:51

标签: mongodb spring-data mongodb-java

我查看了与我的嵌入式分页情况相关的an older question。虽然带有切片的嵌入式分页工作正常,但总页面解决方案仍然缺失,我想知道是否可以在服务器端获得评论的总大小。

有没有办法查询或计算服务器上嵌入式阵列的大小,而无需将整个文档提取到我的应用程序并手动计算?

我不介意为此进行2次查询,1次用于分页评论,1次用于获取评论总数。如果我可以在一个查询中执行此操作,那将会很棒。

顺便说一下,我正在使用java驱动程序和spring-data mongodb。

请分享您的想法。谢谢!

1 个答案:

答案 0 :(得分:5)

获取嵌入式文档总数的最佳/最快方法是创建一个附加字段,并在每次更新/插入后重新计算计数。 文件将是这样的

{
  _id: 1,
  comments: [],
  commentsCount: 5
}

然后,您可以在切片时简单地包含commentsCount字段:

//this query will include only 10 comments _id and comments count of root document
db.articles.find({}, {comments:{$slice: [20, 10]}, _id:1, commentsCount: 1}) 

实际上没有其他方法可以计算嵌入文档的总数(我不是在讨论m / r,因为实时请求的速度很慢)