版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heihu_malice7/article/details/78958916
最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,只能力不从心,skip如果跳过大量的数据会很慢,并且会越查越慢,针对这一情况,可以通过条件查询+排序+限制返回记录,即 边查询,边排序,排序之后,抽取上一页中的最后一条记录,作为当前分页的查询条件,从而避免了skip效率低下的问题。
代码如下:
/**
* 大数据量排序方式分页获取数据
* @param collectionName 表名
* @param totalCon 查询条件汇总
* @param fields 输出指定字段
*/
public DBCursor getPageList(int pageSize,String collectionName,BasicDBObject totalCon,BasicDBObject fields) {
try {
return mongoTemplate.getCollection(collectionName).find(totalCon,fields).sort(new BasicDBObject("_id", 1)).limit(pageSize);
} catch (Exception e) {
LoggerUtils.error(getClass(), "***大数据量数据分页查询失败,collectionName=" + collectionName, e);
}
return null;
}