Как получить запись из Mongo-DB один за другим - PullRequest
0 голосов
/ 04 марта 2019

Мне нужна помощь, у меня 30 000 записей в Mongo-DB Collection.Я хочу получить один документ за раз и следующий процесс снова.Я использую Spring Boot

Как запрос: -

select top 1 * from StockPrice 
where _id > 00017a813392410dac614961c70c80a8
order by _id;

и в следующий раз новый идентификатор будет установлен в секции where для сравнения

1 Ответ

0 голосов
/ 05 марта 2019

Я нашел свое решение, используя логику этого метода для вышеуказанного запроса.Надеюсь, это поможет кому-то

private @Autowired StockPriceRepository stockPriceRepo;
private @Autowired MongoTemplate mongoTemplate;
private static String _id = "";
private static volatile Boolean isFirstRead = false;

public StockPrice fetchUuIdAndDate(Integer limit) {
    logger.info("Fetch UuId And Date :- (limit : "+ limit + ")");
    Query query = new Query();
    query.fields().include("date");
    query.with(new Sort(Sort.Direction.ASC, "_id"));
    query.limit(limit == 1 ? limit: 1);
    StockPrice stockPrice;
    if(!isFirstRead) { // only 1 time
        stockPrice = this.mongoTemplate.findOne(query, StockPrice.class);
        _id = stockPrice.getUuId();
        isFirstRead = true;
    } else {
        query.addCriteria(Criteria.where("_id").gt(_id));
        stockPrice = this.mongoTemplate.findOne(query, StockPrice.class);
        _id = stockPrice.getUuId();
    }
    logger.info("Query :- " + query.toString());
    return stockPrice;
} 
...