Реализация данных 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" }
>

0 ответов

Другие вопросы по тегам