我正在研究一个ruby项目并使用mongodb。我在数据库中保存节目的开始和结束时间。我正在尝试获得当前节目的结果(根据现在的时间)和之后的节目。这是我的代码:
def get_current_and_next_schedule(channel, time = Time.now)
end_of_day = _get_end_of_day(time)
Schedule.all(
:start_time => { '$gte' => time.utc },
:end_time => { '$lte' => end_of_day.utc },
:show_id => { '$in' => Show.all(:channel_id => channel.id).collect { |s| s.id } },
:order => :start_time,
:limit => 2
)
end
如果我有两个节目,时间是3:00-4:00和4:00-5:00,如果我在3:30查询数据库,它们应该在返回的结果中。但是使用上面的代码,结果只会显示4:00-5:00。我知道这是因为我检查'$ gte'=> time.utc 如果开始时间已过,但节目尚未结束,如何修复此查询以使其包含当前节目?
答案 0 :(得分:0)
其中end_time
大于当前时间,而end_time
小于或等于 end_of_day
。可能是
:end_time => { '$gt' => time.utc },
:end_time => { '$lte' => end_of_day.utc }