Spring Boot MongoDB возвращает только большие даты, но не равные даты с другим временем - PullRequest
0 голосов
/ 02 февраля 2020

Я выполняю REST-сервис с Spring Boot и MongoDB.

У меня есть MongoDB с полем 'startDate', имеющим значения в длинном формате (например, 1484766055120).

Я преобразовал его в Spring Boot в читаемый формат (свойство Sample.class):

@Field(targetType = FieldType.INT64)
private java.util.Date startDate;

Я выполняю поиск по дате:

SimpleDateFormat formatter = new SimpleDateFormat(dd-MM-yyyy);
Date date = (Date) formatter.parse(startDateParam);
query = new Query(Criteria.where("startDate").gt(date));
// I also have new Query(Criteria.where("startDate").is(date)) situation; 
return mongoTemplate.find(query, Sample.class);

Когда Я передаю 27-01-2017 как startDateParam У меня проблема в том, что REST возвращает, например, запись со значением 2017-01-27T12: 52: 53.482 + 0000 (потому что больше, чем 2017-01-27T00: 00: 00.000 + 0000) .. .

Как не вернуть это значение, а только тертые даты?

1 Ответ

0 голосов
/ 02 февраля 2020

Поскольку вы все еще используете Date типы данных и хотите найти следующие даты, игнорируя все промежуточные значения dateTime. Хотя эти методы ограничены, вы можете попробовать это.

...
Date date_gt = (Date) formatter.parse(startDateParam);

// manually bypass all the values.
date_gt.setHours(23);
date_gt.setMinutes(59);
date_gt.setSeconds(59);

query = new Query(Criteria.where("startDate").gt(date_gt));
return mongoTemplate.find(query, Sample.class);
...

// and for exact match
Date date = (Date) formatter.parse(startDateParam);
query = new Query(Criteria.where("startDate").is(date)); 
return mongoTemplate.find(query, Sample.class);

Надеюсь, этот обходной путь может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...