Реализация данных Spring для обработки запроса с датами в MongoDB
У меня есть проблема с весенней обработкой данных Mongo DB поиска с диапазоном дат.
Мой источник данных Spring определяет функцию с этой сигнатурой:
long countByDatetimeBetween(ZonedDateTime start, ZonedDateTime end);
И в журналах я вижу, что spring отправляет следующий запрос на мой экземпляр mongodb.
db.collection.find({ "datetime" : {
"$gt" : { "$date" : "2014-10-18T15:06:44.408Z"} ,
"$lt" : { "$date" : "2014-10-25T15:06:44.408Z"}
}})
Проблема в том, что этот запрос не отвечает ни с какими значениями. После нескольких тестов с оболочкой mongo я заметил, что работает следующий синтаксис:
db.collection.find({ "datetime" : {
"$gt" : ISODate("2014-10-18T15:06:44.408Z") ,
"$lt" : ISODate("2014-10-25T15:06:44.408Z")
}})
Итак, мои вопросы:
- Это нормально, что оператор $ date не ведет себя как синтаксис ISODate?
- Есть ли способ указать весенним данным использовать формат ISODate вместо оператора даты?
Спасибо за содействие.
РЕДАКТИРОВАТЬ: подмножество данных для отображения структуры
{ "_id" : ObjectId("549827e1dff2a4d24f5afb26"), "datetime" : ISODate("2014-11-02T21:39:06Z"), "origin" : "origin" }
{ "_id" : ObjectId("549827e1dff2a4d24f5afb27"), "datetime" : ISODate("2014-11-13T04:57:32Z"), "origin" : "origin" }
{ "_id" : ObjectId("549827e1dff2a4d24f5afb28"), "datetime" : ISODate("2014-11-26T03:56:29Z"), "origin" : "origin" }
{ "_id" : ObjectId("549827e1dff2a4d24f5afb29"), "datetime" : ISODate("2014-11-16T04:47:17Z"), "origin" : "origin" }
РЕДАКТИРОВАТЬ: результаты монго оболочки
> db.errors.find({ "datetime" : { "$gt" : { "$date" : "2014-10-18T15:06:44.408Z"} , "$lt" : { "$date" : "2014-10-25T15:06:44.408Z"}}})
> db.errors.find({ "datetime" : { "$gt" : ISODate("2014-10-18T15:06:44.408Z") , "$lt" : ISODate("2014-10-25T15:06:44.408Z")}})
{ "_id" : ObjectId("549827e1dff2a4d24f5afb1f"), "datetime" : ISODate("2014-10-24T14:33:54Z"), "origin" : "origin" }
{ "_id" : ObjectId("549827e1dff2a4d24f5afb2a"), "datetime" : ISODate("2014-10-24T04:40:07Z"), "origin" : "origin" }
{ "_id" : ObjectId("549827e1dff2a4d24f5afb6e"), "datetime" : ISODate("2014-10-25T02:17:47Z"), "origin" : "origin" }
>