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

ber*_*tie 2 mongodb mongodb-java spring-data

我查看了一个与我的嵌入式分页情况相关的旧问题.尽管带有切片的嵌入式分页工作正常,但总页面解决方案仍然缺失,我想知道是否有可能在服务器端获得注释的总大小.

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

我不介意为此做2个查询,1个用于分页评论,1个用于获取评论总数.如果我可以在一个查询中执行此操作,那将是惊人的.

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

请分享你的想法.谢谢 !

And*_*ich 5

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

{
  _id: 1,
  comments: [],
  commentsCount: 5
}
Run Code Online (Sandbox Code Playgroud)

那么你可以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}) 
Run Code Online (Sandbox Code Playgroud)

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