Announcement Announcement Module
Collapse
No announcement yet.
MongoRepository's PageRequest scalabillity Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • MongoRepository's PageRequest scalabillity

    Hi guys, I'm trying the MongoRepository paging feature, it seems that for every page request it's doing a query that retrieves the full result set and then it filter only the requested page, is this correct?

    I'm asking because I have an use case where the result set could be possibly large and it seems a non scallable way of doing pagination, or maybe it's beyond the porpouse of this feature and I should implement a custom DAO with ranged queries to do the pagination using mongodb resources.

    Any ideas?


    The DAO:

    Code:
    @Repository
    public interface ItemRepository extends MongoRepository<Item, ObjectId> {
      Page<Item> findByState(String state, Pageable pageable);
    }

    The testing code:

    Code:
    Page<Item> page01 = itemRepo.findByState("ACTIVE", new PageRequest(2, 10));
    Page<Item> page02 = itemRepo.findByState("ACTIVE", new PageRequest(3, 10));

    The debug log that shows that 2 full queries are made:

    Code:
    2011-12-01 18:21:56,265 [main] DEBUG: org.springframework.data.mongodb.repository.query.MongoQueryCreator.complete - Created query { "state" : "ACTIVE"}
    
    2011-12-01 18:21:56,283 [main] DEBUG: org.springframework.data.mongodb.core.MongoTemplate.doFind - find using query: { "state" : "ACTIVE"} fields: null for class: class com.latpro2.domain.entity.Item in collection: items
    
    2011-12-01 18:22:30,034 [main] DEBUG: org.springframework.data.mongodb.repository.query.MongoQueryCreator.complete - Created query { "state" : "ACTIVE"}
    
    2011-12-01 18:22:30,034 [main] DEBUG: org.sprinframework.data.mongodb.repository.query.MongoQueryCreator.complete - Created query { "state" : "ACTIVE"}
    2011-12-01 18:22:30,056 [main] DEBUG: org.springframework.data.mongodb.core.MongoTemplate.doFind - find using query: { "state" : "ACTIVE"} fields: null for class: class com.latpro2.domain.entity.Item in collection: items
Working...
X