0

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

4

1 回答 1

0

其中end_time大于当前时间且小于等于。可能是这样end_time end_of_day

:end_time   => { '$gt' => time.utc },
:end_time   => { '$lte' => end_of_day.utc }
于 2012-11-08T14:37:12.697 回答