MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Spring MongoItemReader nie odczytuje wszystkich rekordów podczas pojedynczego wykonania

Domyślam się, że prawdopodobnie aktualizujesz kolekcję, z której czytasz, a także aktualizujesz pole, którego używa zapytanie. Jeśli tak, to ostatnio miałem ten sam problem.

MongoItemReader to czytnik stronicowany. Tak więc za każdym razem, gdy autor aktualizuje te rekordy, czytelnik ma mniejszą pulę, ale liczba stron wciąż rośnie.

Wyobraź sobie, że mamy 20 pozycji i czytamy 5 pozycji na raz:

1) Czyta pozycje 1-5 z 20.

2) Aktualizuje pozycje 1-5, a teraz jest w sumie 15 możliwych pozycji

3) Czyta pozycje 6-10 z łącznej liczby 15.

4) Aktualizuje pozycje 6-10 i teraz jest w sumie 10 możliwych pozycji.

5) Czyta pozycje 11-15 z 10 możliwych pozycji

6) Odczyt zwraca wartość null, ponieważ dla tej strony nic nie zostało zwrócone.

Więc teraz przetworzyłeś tylko połowę.

Postępowałem zgodnie z poniższym samouczkiem, aby stworzyć MongoDbCursorItemReader, który rozwiązał ten problem dla mnie:https://blog.zenika.com/2012/05/23/wiosna-batch-and-mongodb-cursor-based-item-reader/




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak utworzyć indeks TTL na długim znaczniku czasu w MongoDB?

  2. Jak w Pyramid zwrócić surowy kod HTML z widoku?

  3. Morphia/MongoDB:Dostęp do obiektu osadzonego z obiektu @Embedded

  4. nie można zaktualizować dokumentu przez 'findById' i save() z obietnicą

  5. MongoDB elemmatch wiele elementów w tablicy