我们如何使用mongoTemplate实现Mongodb集合的分页功能

7
我是一名MongoDb的新手,我需要为任何特定集合实现分页功能。例如,我有一个名为Foo的集合,并且我有一个函数可以返回Foo集合中的所有记录。
public List<Foo> getFoo(){

}

我需要使用mongoTemplate和Spring data mongodb实现分页来获取Foo中的记录,该如何实现?

2个回答

14

您可以在查询对象上使用.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);

1
您可以在使用的查询中提供跳过和限制,这有助于进行分页。 查看MongoTemplate类中的find方法。 您的方法应该如下所示:
public List<Foo> getFoo(int pageNumber, int pageSize) {...}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接