sql >> Base de Datos >  >> NoSQL >> MongoDB

Iterar sobre una gran colección en MongoDB a través de datos de primavera

Respuesta tardía, pero tal vez ayude a alguien en el futuro. Los datos de Spring no proporcionan ninguna API para envolver Mongo DB Cursor capacidades. Lo usa dentro de find métodos, pero siempre devuelve una lista completa de objetos. Las opciones son usar la API de Mongo directamente o usar la API de paginación de datos de Spring , algo así:

        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 no es suficiente para grandes conjuntos de datos (consulte los comentarios de @Shawn Bush) Utilice Mongo API directamente para tales casos.