В моем документе есть поле long
:
{
"_id" : BinData(3,"qUlr7T//axtyJisrSnDRkw=="),
...
"next-run-date" : "2018-12-23T17:22:59.026Z",
"next-run-millis" : NumberLong("1540833792947"),
...
"_class" : "...domain.scheduling.ScheduleReportConfiguration"
}
Я использую Spring Data MongoDB (v2.0.5)
и имею репозиторий:
interface ScheduleReportConfigurationRepository extends MongoRepository<ScheduleReportConfiguration, UUID> {
List<ScheduleReportConfiguration> findByNextRunMillisLessThan( long milliseconds )
}
Когда я пытаюсь выполнить его, произведенный запрос:
{ "next-run-millis" : { "$lt" : { "$numberLong" : "1544809451462" } } }
Вопрос 1: Почему это выглядит так ??Когда я пытаюсь выполнить его в БД, это не имеет смысла.Почему Spring не создает такой запрос, как: { "next-run-millis" : { "$lt" : NumberLong(1544809451462) } }
??
В любом случае оба эти запроса не работают.Под первым запросом я имею в виду выполнение метода репозитория в моем тесте интеграции приложения, под вторым - выполнение запроса в оболочке mongo.Ошибка:
org.springframework.data.mongodb.UncategorizedMongoDbException:
Query failed with error code 2 and error message 'error processing query:
ns=test.scheduleReportConfigurationTree: next-run-millis $lt 1544809451462
No query solutions' on server mongo:27017; nested exception is
com.mongodb.MongoQueryException: Query failed with error code 2 and error message
'error processing query: ns=test.scheduleReportConfigurationTree: next-run-millis $lt 1544809451462
Вопрос 2: Что я не так ??Как мне сделать мой запрос сработал ??Согласно документам, операторы сравнения должны хорошо работать с long.
Спасибо за ваши ответы и помощь.