Запрос даты в Mongoid

Об этом много спрашивали, но я все еще сталкиваюсь с некоторыми проблемами.

У меня есть дата, которую я получаю и храню как дату. Мне нужно запросить больше и меньше, поэтому я изменил его на время, попробовал еще раз, но получаю странные результаты.

я делаю это

Class.where(:event_date.gt => Time.parse(Date.today))

и я получаю старые пластинки 1940-х, 1960-х годов и другие. Я попытался преобразовать время, добавив .utc в конце, сравнивая только с Date.today, но пока ничего не решило проблему. Это селектор, созданный Mongoid

selector: {:date_utc=>{"$gte"=>Sat Sep 10 21:00:00 UTC 2011}},

Я получаю дату в этом формате «2011-09-11» и сохраняю ее в поле «Время». Пробовал анализировать это как Time utc, но не повезло.

Есть идеи? Я использую Монгоид 2.0.2. Более поздние версии кажутся несовместимыми с другими расширениями, которые я использую.

[ОБНОВЛЕНИЕ]

Так что проблема, видимо, в старых датах до 1970 года. Как мне с ними быть, вот в чем вопрос.


person Bashar Abdullah    schedule 12.09.2011    source источник


Ответы (1)


Это известная ошибка в Mongo. См. ПРОБЛЕМА 405.

Причина в том, что Mongo использует число без знака для хранения дат, поэтому все, что предшествует эпохе, переносится далеко в будущее.

К счастью, эта проблема была исправлена ​​в выпущенной сегодня стабильной версии 2.0. Обновление до этой версии должно решить вашу проблему.

person Javier Ferrero    schedule 12.09.2011
comment
Спасибо. Поскольку вопрос был открыт с прошлого года, мне, похоже, повезло. Означает ли это, что мне также нужно обновить Mongoid? Это, кажется, вызывает проблемы для меня - person Bashar Abdullah; 13.09.2011