Как извлекать записи из Mongo-DB одну за другой

#mongodb #spring-data-mongodb

#mongodb #spring-data-mongodb

Вопрос:

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

Подобный запрос :-

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

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

Комментарии:

1. Пожалуйста, опубликуйте несколько сценариев, например, как вы фильтруете свои записи в запросе или у вас нет условий фильтрации, но вы хотите получать результат из базы данных один за другим?

2. @Mani, пожалуйста, уточните вопрос

Ответ №1:

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

 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;
}