我查看了与我的嵌入式分页情况相关的an older question。虽然带有切片的嵌入式分页工作正常,但总页面解决方案仍然缺失,我想知道是否可以在服务器端获得评论的总大小。
有没有办法查询或计算服务器上嵌入式阵列的大小,而无需将整个文档提取到我的应用程序并手动计算?
我不介意为此进行2次查询,1次用于分页评论,1次用于获取评论总数。如果我可以在一个查询中执行此操作,那将会很棒。
顺便说一下,我正在使用java驱动程序和spring-data mongodb。
请分享您的想法。谢谢!
答案 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,因为实时请求的速度很慢)