【问题标题】:How can we implement Pagination for Mongodb Collection using mongoTemplate我们如何使用 mongoTemplate 为 Mongodb Collection 实现分页
【发布时间】:2014-10-13 11:56:54
【问题描述】:

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

我有一个 Collection Foo,我有一个返回 Foo 集合中所有记录的函数

public List<Foo> getFoo(){

}

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

【问题讨论】:

    标签: java mongodb pagination mongodb-query


    【解决方案1】:

    对于一般分页,您可以在 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,并使用范围查询来避免“跳过”1000 个结果。

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

    【讨论】:

      【解决方案2】:

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

      你的方法应该是这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-15
        • 2020-12-24
        • 1970-01-01
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        相关资源
        最近更新 更多