Запрос mongoTemplate с использованием даты - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь найти все строки до определенной даты, используя mongoTemplate в Spring Java.Это не возвращает строк, хотя есть много старых записей.

В чем проблема?

Calendar cal = GregorianCalendar.getInstance();
cal.add( Calendar.DAY_OF_YEAR, -73);
Date prevDate = cal.getTime();
List<AuditTrailDTO> dt = mongoTemplate.find(Query.query(Criteria.where("AUDIT_CREATE_DATETIME").lte(prevDate)), AuditTrailDTO.class);

AUDIT_CREATE_DATETIME в БД Mongo хранится в следующем формате:

Audit_Create_DateTime:2019-07-10 08:47:02.078

1 Ответ

0 голосов
/ 25 сентября 2019

Должно работать, если тип Audit_Create_DateTime равен Date, поэтому я предполагаю, что Audit_Create_DateTime имеет тип String.

Для выполнения логики less-than-equals можно сделать следующееполе String;

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");  
Query query = Query.query(Criteria.where("AUDIT_CREATE_DATETIME").lte(dateFormat.format(prevDate)));
List<AuditTrailDTO> dt = mongoTemplate.find(query, Customer.class);

, которое будет возвращать правильные результаты, хотя я рекомендую правильно хранить значения Date как правильный тип, а не как String тип.

...