2010-04-17 3 views
4

У меня есть коллекция с индексом на: created_at (в данном конкретном случае должны быть дата)MongoDB рубин даты

С рельсов, что это правильный путь для сохранения записи, а затем получить его на сегодняшний день?

Я пытаюсь что-то вроде:

Модель: поле: created_at,: тип => Время

сценарий:

Col.create (: created_at => Time.parse (another_model .created_at) .to_s

и

Col.find (: все,: условия => {: created_at => Time.parse (то же самое)})

, и это ничего не возвращает

+0

Знаете ли вы, что вы можете извлечь дату создания из _id в mongo? – Dmitry

+0

В то время я не писал вопрос ... –

ответ

3

Драйвер Mongo и различные ORM обрабатывают объекты Date, Time и DateTime просто отлично; нет причин бросать их в строки.

Col.create(:created_at => another_model.created_at) 

И вывод:

Col.all(:created_at => another_model.created_at) 

Вы не хотите быть настройки строк, потому что даты хранятся в виде BSON Дата объектов, и индексирование и поиск как таковой. Если вы сохраните их в виде строк, вы не сможете эффективно выполнять такие действия, как более/менее, чем сравнение диапазонов.

1
Col.create(:created_at => Time.parse(another_model.created_at).to_s) 

Эта линия будет проходить объект времени в виде строки, снять to_s, чтобы отправить его в разборе слоя типа в вашем ОРМ (MongoMapper или Mongoid) в качестве времени объект. Это единственная ошибка, которую я вижу, что может привести к ее неработоспособности.

Смежные вопросы