Я не уверен, как Mongoid делает это, но запрос, который вы хотите получить к MongoDB, выглядит примерно так:
db.contact.find({
created_at: {
$gte: ISODate('2012-02-10'),
$lt: ISODate('2012-02-11')
}
})
Обратите внимание, что мы начинаем с $gte
и заканчиваем $lt
чтобы получить полуоткрытый интервал [2012-02-10, 2012-02-11)
, и это равносильно усечению полного времени только до части даты.
С MongoMapper я бы сказал так:
Concat.where(
:created_at => {
:$gte => Time.new(2012, 2, 10),
:$lt => Time.new(2012, 2, 11)
}
)
Возможно, то же самоевещь будет работать с Mongoid.
Кроме того, это:
"/.*2012-02-10.*/"
- строка, вы, вероятно, хотите, чтобы /.*2012-02-10.*/
передал регулярное выражение в MongoDB.Это не сработает с MongoMapper, поэтому я подозреваю, что вы не сможете какое-то время использовать регулярные выражения с Mongoid;оба они, вероятно, просто передают подобные вещи на уровень соединения MongoDB более низкого уровня.В любом случае, вы почти никогда не захотите использовать регулярное выражение с MongoDB, так как он не сможет использовать индекс, вы захотите привязать его в начале, /^2012-02-10/
, чтобы можно было использовать индексы.