Как создать запрос Spring в Mongo DB с критериями, учитывающими двухстрочный диапазон дат

#java #spring #string #mongodb #date

#java #spring #строка #mongodb #Дата

Вопрос:

Я должен создать критерии запроса поиска, используя поле даты, которое хранится в строковом формате. Критерии, которые я написал, такие:

 Query findQuery = new Query()
findQuery.addCriteria(Criteria.where(mongoField).gt(startDate).lt(endDate));
  

где «mongofield» является строковым типом, но «StartDate» и «EndDate» являются типом LocalDate.

Очевидно, что этот критерий не работает, потому что сравнение неэффективно. Я обнаружил, что мне следует использовать оператор $expr вместе с $dateFromString , но я не нашел ни одного четкого примера использования в коде Java.

Пожалуйста, кто-нибудь может мне помочь в написании хорошего заявления в Spring Java code?

Ответ №1:

Вы можете преобразовать LocalDate в строку, а затем сравнить

         LocalDate startDate = LocalDate.now();
        LocalDate endDate = LocalDate.now().plusDays(20);
        // Define time format converter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        // Convert LocalDate type to String type
        Criteria criteria = Criteria.where("mongoField").is("").gte(startDate.format(formatter)).lt(endDate.format(formatter));
        Query query = new Query(criteria);