MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Iterar sobre uma grande coleção no MongoDB via spring-data


Resposta tardia, mas talvez ajude alguém no futuro. Os dados do Spring não fornecem nenhuma API para encapsular o Mongo DB Cursor capacidades. Ele o usa dentro de find métodos, mas sempre retorna a lista completa de objetos. As opções são usar a API Mongo diretamente ou usar a API Spring Data Paging , algo parecido:
        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 (!) Este método não é suficiente para grandes conjuntos de dados (veja os comentários de @Shawn Bush) Por favor, use a API do Mongo diretamente para esses casos.