我是一名MongoDb的新手,我需要为任何特定集合实现分页功能。例如,我有一个名为Foo的集合,并且我有一个函数可以返回Foo集合中的所有记录。
public List<Foo> getFoo(){
}
我需要使用mongoTemplate和Spring data mongodb实现分页来获取Foo中的记录,该如何实现?
public List<Foo> getFoo(){
}
我需要使用mongoTemplate和Spring data mongodb实现分页来获取Foo中的记录,该如何实现?
您可以在查询对象上使用.skip()
和.limit()
修饰符来进行通用的分页,然后将其作为参数传递给您的方法:
对于一般的分页,您可以在查询对象上使用.skip()
和.limit()
修饰符来进行通用的分页,然后将其作为参数传递给您的方法:
Query query = new Query();
query.addCriteria(Criteria.where("a").is("b"));
query.skip(10);
query.limit(10);
List<Foo> results = mongoOperation.find(query, Foo);
通过使用.skip()
设置要跳过的结果数量和.limit()
设置返回的页面大小。
因此,从MongoTemplate中派生出MongoOperations的一个实例,并在那里使用标准的.find()
操作。
尽管跳过和限制不是最有效的选项,但尽可能将上次查看的值存储在自然索引(如_id
)上,并使用范围查询来避免“跳过”数千个结果。
Query query = new Query();
query.addCriteria(Criteria.where("_id").gt(lastSeen));
query.limit(10);
public List<Foo> getFoo(int pageNumber, int pageSize) {...}