Suponho que você provavelmente esteja atualizando a coleção de sua leitura e também atualizando um campo que a consulta está usando. Se sim, tive o mesmo problema recentemente.
O MongoItemReader é um leitor paginado. Assim, cada vez que o escritor atualiza esses registros, o leitor tem um conjunto menor, mas a página ainda está aumentando.
Então imagine que temos 20 itens e lemos 5 itens por vez:
1) Lê os itens 1-5 de um total de 20.
2) Atualiza os itens 1-5 e agora há um total de 15 itens possíveis
3) Lê os itens 6-10 de um total de 15.
4) Atualiza os itens 6-10 e agora há um total de 10 itens possíveis.
5) Lê os itens 11-15 de 10 itens possíveis
6) Read retorna null porque não há nada retornado para essa página.
Então agora você só processou metade.
Eu segui o tutorial abaixo para criar um MongoDbCursorItemReader que resolveu esse problema para mim:https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/