我们如何使用mongoTemplate为Mongodb Collection实现分页
我是mongoDb中的菜鸟我需要为任何特定的集合实现分页,比如说
我有一个Collection Foo,我有一个Fucntion,它返回Foo集合中的所有记录
public List getFoo(){ }
但是我需要通过实现分页从Foo中获取记录如何通过使用mongoTemplate Spring数据mongodb来实现这一点?
对于一般分页,您可以在Query对象上使用.skip()
和.limit()
修饰符,您可以将这些修饰符作为参数传递给您的方法:
Query query = new Query(); query.addCriteria(Criteria.where("a").is("b")); query.skip(10); query.limit(10); List 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);
您可以为正在使用的查询提供跳过和限制,这应该有助于进行分页。 看一下MongoTemplate类中的方法find 。
您的方法应如下所示:
public List getFoo(int pageNumber, int pageSize) {...}