sql >> Databasteknik >  >> NoSQL >> MongoDB

Spring MongoItemReader läser inte alla poster vid enstaka exekvering

Jag gissar att du antagligen uppdaterar samlingen din läsning från och att du också uppdaterar ett fält som frågan använder. I så fall hade jag samma problem nyligen.

MongoItemReader är en sidläsare. Så varje gång skribenten uppdaterar dessa poster har läsaren en mindre pool men sidan ökar fortfarande.

Så föreställ dig att vi har 20 objekt och läser 5 objekt åt gången:

1) Läser punkterna 1-5 från totalt 20.

2) Uppdaterar objekt 1-5 och nu finns det totalt 15 möjliga objekt

3) Läser objekt 6-10 från totalt 15.

4) Uppdaterar objekt 6-10 och nu finns det totalt 10 möjliga objekt.

5) Läser objekt 11-15 av 10 möjliga objekt

6) Read returnerar null eftersom det inte returneras något för den sidan.

Så nu har du bara bearbetat hälften.

Jag följde handledningen nedan för att skapa en MongoDbCursorItemReader som löste detta problem för mig:https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/




  1. Sök och ersätt i Mongodb?

  2. ServerSelectionTimeoutError vid anslutning till aws med pymongo

  3. Cachning av upprepade frågeresultat i MongoDB

  4. Redis datastrukturdesign för sortering av tidsbaserade värden