我们如何使用mongoTemplate为Mongodb Collection实现分页

时间:2014-08-20 07:49:56

标签: java mongodb pagination mongodb-query

我是mongoDb中的菜鸟我需要为任何特定的集合实现分页,例如说

我有一个Collection Foo,我有一个Fucntion,可以返回Foo系列中的所有记录

public List<Foo> getFoo(){

}

但是我需要通过实现分页来从Foo中获取记录如何通过使用mongoTemplate Spring数据mongodb实现这一目标?

2 个答案:

答案 0 :(得分:14)

对于一般分页,您可以使用Query对象上的.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之类的自然索引上,并使用范围查询来避免跳过&#34;跳过&#34;通过1000个结果。

    Query query = new Query();
    query.addCriteria(Criteria.where("_id").gt(lastSeen));
    query.limit(10);

答案 1 :(得分:1)

您可以为正在使用的查询提供跳过和限制,这应该有助于进行分页。 看看MongoTemplate类中的方法find

您的方法应如下所示:

public List<Foo> getFoo(int pageNumber, int pageSize) {...}