#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);