Ihr Fehler tritt auf, weil Sie den Stream zu langsam verarbeiten, sodass der Cursor eine Zeitüberschreitung hat, bevor Sie zum nächsten Batch gelangen.
Die Stapelgröße kann auf Spring Data Query-Objekt , oder in einem Repository mit @Meta Anmerkung. Zum Beispiel:
Query query = query(where("firstname").is("luke"))
.batchSize(100);
Oder bei Verwendung von Repositories:
@Meta(batchSize = 100)
List<Person> findByFirstname(String firstname);
Siehe Spring Data MongoDB-Dokumentation für weitere Details.
Das Cursor-Timeout kann mit derselben Konfiguration auch für einzelne Abfragen deaktiviert werden. z.B. @Meta(flags = {CursorOption.NO_TIMEOUT})
.
Das Cursor-Timeout kann nicht pro Abfrage geändert werden. Das ist eine Serverkonfiguration. Sie müssen den cursorTimeoutMillis verwenden Server-Parameter, um dies serverweit zu ändern.