sql >> Database teknologi >  >> NoSQL >> MongoDB

Gentag over stor samling i MongoDB via spring-data

Sen svar, men vil måske hjælpe nogen i fremtiden. Forårsdata giver ikke nogen API til at ombryde Mongo DB Cursor kapaciteter. Den bruger den i find metoder, men returnerer altid en udfyldt liste over objekter. Mulighederne er at bruge Mongo API direkte eller at bruge Spring Data Paging API , sådan noget:

        final int pageLimit = 300;
        int pageNumber = 0;
        Page<T> page = repository.findAll(new PageRequest(pageNumber, pageLimit));
        while (page.hasNextPage()) {
            processPageContent(page.getContent());
            page = repository.findAll(new PageRequest(++pageNumber, pageLimit));
        }
        // process last page
        processPageContent(page.getContent());

UPD (!) Denne metode er ikke tilstrækkelig for store datasæt (se @Shawn Bush kommentarer) Brug venligst Mongo API direkte til sådanne tilfælde.



  1. db.collection.count() returnerer mange flere dokumenter til opdelt indsamling i MongoDB

  2. oprettelse af en anden database for hver samling i MongoDB 2.2

  3. Sådan håndteres uaktuelle forbindelser i MongoDB

  4. Redis vil ikke hente data fra cachen