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 の 2 つの番組がある場合、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 に答える