Spring 数据 Mongodb - 获取页面上的最后一项
Spring Data Mongodb - obtaining last item on a page
这是我目前在 Spring 数据上的分页方法 MongoDB:
@RequestMapping(value="/nextposts", method=RequestMethod.GET)
public List getNextPosts(@RequestParam int next) {
Pageable pageable = new PageRequest(next, 5, new Sort(new Sort.Order(Direction.DESC, "id")));
page = repo.findAll(pageable);
return page.getContent();
}
如您所见,我正在获取由 "next" 变量指定的页面,然后 return 将其发送给用户。
我正在尝试获取页面中最后一个 returned 文档的句柄,特别是获取其 ObjectId,以便我可以使用 mongodb 实现 "Approach 2" 快速分页: http://blog.mongodirector.com/fast-paging-with-mongodb/
我查看了 PageRequest 和 Pageable 的文档,但是 none 方法将 return 页面中的最后一个文档。
有谁知道如何做到这一点?
Simon 实际上你必须自定义一些可分页逻辑才能获得更多 "features" 因为我认为最后一项不能像那样获得。
这是一个很好的例子,您可以在其中定义正确的页面资源模型并向其中添加一些元数据。 link 例如第一个、最后一个、下一个 rels.
http://www.javaenthusiasm.com/rest-pagination-with-spring-boot/
如果您需要更多解释,请告诉我。
最终我无法使用 MongoRepository 做到这一点。
我不得不使用 MongoOperation / MongoTemplate 来完成这个任务。
@RequestMapping(value="/XXX", method=RequestMethod.GET)
public List getNextPosts(@RequestParam String next) {
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "_id"));
query.limit(5);
ObjectId objID = new ObjectId(next);
query.addCriteria(Criteria.where("_id").lt(objID));
List<Posts> posts = mongoOperation.find(query, Posts.class);
return posts;
}
这是我目前在 Spring 数据上的分页方法 MongoDB:
@RequestMapping(value="/nextposts", method=RequestMethod.GET)
public List getNextPosts(@RequestParam int next) {
Pageable pageable = new PageRequest(next, 5, new Sort(new Sort.Order(Direction.DESC, "id")));
page = repo.findAll(pageable);
return page.getContent();
}
如您所见,我正在获取由 "next" 变量指定的页面,然后 return 将其发送给用户。
我正在尝试获取页面中最后一个 returned 文档的句柄,特别是获取其 ObjectId,以便我可以使用 mongodb 实现 "Approach 2" 快速分页: http://blog.mongodirector.com/fast-paging-with-mongodb/
我查看了 PageRequest 和 Pageable 的文档,但是 none 方法将 return 页面中的最后一个文档。
有谁知道如何做到这一点?
Simon 实际上你必须自定义一些可分页逻辑才能获得更多 "features" 因为我认为最后一项不能像那样获得。
这是一个很好的例子,您可以在其中定义正确的页面资源模型并向其中添加一些元数据。 link 例如第一个、最后一个、下一个 rels.
http://www.javaenthusiasm.com/rest-pagination-with-spring-boot/
如果您需要更多解释,请告诉我。
最终我无法使用 MongoRepository 做到这一点。
我不得不使用 MongoOperation / MongoTemplate 来完成这个任务。
@RequestMapping(value="/XXX", method=RequestMethod.GET)
public List getNextPosts(@RequestParam String next) {
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "_id"));
query.limit(5);
ObjectId objID = new ObjectId(next);
query.addCriteria(Criteria.where("_id").lt(objID));
List<Posts> posts = mongoOperation.find(query, Posts.class);
return posts;
}