MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Itérer sur une grande collection dans MongoDB via spring-data

Réponse tardive, mais peut-être aidera quelqu'un à l'avenir. Les données Spring ne fournissent aucune API pour envelopper le curseur Mongo DB capacités. Il l'utilise dans find méthodes, mais renvoie toujours la liste complète des objets. Les options consistent à utiliser l'API Mongo directement ou à utiliser Spring Data Paging API , quelque chose comme ça :

        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 (!) Cette méthode n'est pas suffisante pour de grands ensembles de données (voir les commentaires de @Shawn Bush) Veuillez utiliser l'API Mongo directement dans de tels cas.