不知道如何编写某个mongodb查询

时间:2012-11-08 13:54:50

标签: ruby mongodb

我正在研究一个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 如果开始时间已过,但节目尚未结束,如何修复此查询以使其包含当前节目?

1 个答案:

答案 0 :(得分:0)

其中end_time 大于当前时间,而end_time 小于或等于 end_of_day。可能是

:end_time   => { '$gt' => time.utc },
:end_time   => { '$lte' => end_of_day.utc }