Spring data mongo: построение и критерии по одному полю - PullRequest
0 голосов
/ 14 января 2019

Я написал этот код для построения следующих критериев:

Criteria filterCriteria = Criteria.where("application").is(applicationId);
if (null != from) {
    filterCriteria = filterCriteria
        .and("timestamp").gte(from);
}
if (null != to) {
    filterCriteria = filterCriteria
        .and("timestamp").lte(to);
}

Я получаю это сообщение об исключении:

Из-за ограничений com.mongodb.BasicDocument вы не можете добавить второе выражение 'timestamp', указанное как 'timestamp: Document {{$ lte = Sat 10 00:00:00 CEST 2020}}'. Критерии уже содержат «метку времени: документ {{$ gte = ср. 10 октября 00:00:00 CEST 2018}}».

Есть идеи?

1 Ответ

0 голосов
/ 14 января 2019

Вы должны добавить оба значения gte и lte в одну операцию and. Вот как я делаю очень похожий запрос:

if (from != null && to != null) {
    criteria = criteria.and("timestamp").gte(from).lte(to)
}
else if (from != null) {
    criteria = criteria.and("timestamp").gte(from)
}
else if (to != null) {
    criteria = criteria.and("timestamp").lte(to)
}
...