关于java 使用mongodb 的分页查询,已经按条件查询count的问题

大家好,请教大家几个问题,先说我的环境srping 2.1.3 mongo 4.0.11 .在这个环境中,我是用mongodb的时候遇到以下两个 问题,实在是不晓得怎么解决了,麻烦大家集思广益,帮助一下。谢谢。
1.我在spring中使用mongodb的mongotemplate.count(query,db) 查询的时候,的时候发现,如果count查询,如果不带条件,直接返回文档数量,是非常快的,但是当带上条件后,count查询就非常慢,我确定条件都是加了索引的。查询了文档,也说mongodb的count查询是有问题的。所以请教大家一下,你们是怎么解决的。
2.在使用mongotemplate.find(query,db) 查询的时候,直接用query.skip((pageNo-1)pageSize) query.limit(pageSize) 来设置查询页数,是可以的查询很多页的,速度也很快,但是如果使用mongotemplate.aggregate()管道的方式,如果设置的Aggregation.skip((pageNo-1)pageSize) ,发现 页数越大,查询的速度也就越慢。所以想问一下,大家怎么使用Aggregation.skip的方式来进行很快的查询。

回答

分页查询不建议用 skip limit. 考虑用有序id或者timestamp. 例子
page1: id>0 limit 20;
page2 id>100 limit 20; //id不连续.

同时分页不建议用页码, 而是用previous(上一页), next(下一页),

上述方式来规避一些mongodb的缺陷. 比如你提到的count慢, skip慢等.

以上是关于java 使用mongodb 的分页查询,已经按条件查询count的问题的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>