MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Spring MongoItemReader liest nicht alle Datensätze bei einmaliger Ausführung

Ich vermute, dass Sie wahrscheinlich die Sammlung aktualisieren, aus der Sie lesen, und dass Sie auch ein Feld aktualisieren, das die Abfrage verwendet. Wenn ja, dann hatte ich vor kurzem das gleiche Problem.

Der MongoItemReader ist ein ausgelagerter Reader. Jedes Mal, wenn der Schreiber diese Datensätze aktualisiert, hat der Leser einen kleineren Pool, aber die Seite wächst immer noch.

Stellen Sie sich also vor, wir haben 20 Artikel und lesen 5 Artikel gleichzeitig:

1) Liest die Punkte 1-5 von insgesamt 20.

2) Aktualisiert Items 1-5 und jetzt gibt es insgesamt 15 mögliche Items

3) Liest die Punkte 6-10 von insgesamt 15.

4) Aktualisiert die Elemente 6-10 und jetzt gibt es insgesamt 10 mögliche Elemente.

5) Liest die Punkte 11-15 von 10 möglichen Punkten

6) Read gibt null zurück, da für diese Seite nichts zurückgegeben wird.

Jetzt haben Sie also nur die Hälfte verarbeitet.

Ich habe das folgende Tutorial befolgt, um einen MongoDbCursorItemReader zu erstellen, der dieses Problem für mich gelöst hat:https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/