两种方式:
方式一:
int currentPage = 10;
int pageNum=20;
int start = (currentPage -1)*pageNum;
List ll = mongoTemplate.find(new Query(Criteria.where("bookId").is(bookId)).with(new Sort(Sort.Direction.DESC,"currenttime")).skip(start).limit(pageNum), CKDXH.class,”zcy1“);
方式二:
public Page<Recorded> getRecordeds(Integer page, Integer size, Recorded recorded) {
if (page<1){
page=1;
}
Sort sort = new Sort(Sort.Direction.DESC,"createTime");
Pageable pageable = new PageRequest(page-1,size,sort);
Query query = new Query();
//条件id =XX
Criteria criteria = Criteria.where("callerId").is(recorded.getCallerId());
criteria.and(“status”).is(Recorded.SUCCESS);
if(startTime!=null&&endTime!=null){
criteria.andOperator(
Criteria.where("createTime").gte(startTime),
Criteria.where("createTime").lte(endTime)
);
}
query.addCriteria(criteria);
//mongoTemplate.count计算总数
long total = mongoTemplate.count(query, Recorded.class);
// mongoTemplate.find 查询结果集
List<Recorded> items = mongoTemplate.find(query.with(pageable), Recorded.class);
return new PageImpl(items, pageable, total);
}
游标的方式:
DBObject queryObject =new BasicDBObject();
queryObject.put("x","x")
DBObjectfilterDBObject=new BasicDBObject();
filterDBObject.put("_id", 0);
filterDBObject.put("cname",1);
filterDBObject.put("onumber",1);
DBCursordbCursor=mongoTemplate.getCollection(collectionName).find(queryObject,filterDBObject);
//排序
DBObjectsortDBObject=newBasicDBObject();
sortDBObject.put("onumber",1);
dbCursor.sort(sortDBObject);
//分页查询
dbCursor.skip(page.getSkip()).limit(page.getPageSize());
//总数
int count=dbCursor.count();
//循环指针
List<Orders>datas=newArrayList<Orders>();
while (dbCursor.hasNext()) {
datas.add(morphia.fromDBObject(Orders.class, dbCursor.next()));
}
page.setRowCount(count);
page.setDatas(datas);
return page;