0

イベントの開始時刻と終了時刻を保存するエントリがあります。MongoDateを使用してクエリを実行し、クエリの現在の時刻に発生しているすべてのイベントを見つけようとしています。

ここでも同じ質問に答えますが、MySQLではなくMongoDBの 場合:PHP/MySQLクエリ-現在の時刻/日付がスケジュールに含まれている場合

これまでのところ、私が見つけることができるのは、MongoDateの逆の種類のクエリだけです。

$start = new MongoDate(strtotime("2010-01-15 00:00:00"));
$end = new MongoDate(strtotime("2010-01-30 00:00:00"));

// find dates between 1/15/2010 and 1/30/2010
$collection->find(array("ts" => array('$gt' => $start, '$lte' => $end)));
4

1 に答える 1

0

実際には簡単です。範囲をチェックする代わりに、等価性をチェックするだけです:

$now = new MongoDate();
$collection->find(array('ts' => $now));

...イベントの開始情報と終了情報を異なるプロパティに保存していないようです。実際にそうしたい場合は、't_start' と 't_end' の 2 つのプロパティを使用し、イベントが実際に終了したときにのみ後者を埋めます。このスキームが適用されると、クエリはもう少し複雑になります。

$collection->find(array(
  't_end'   => array('$exists' => false)
));
于 2012-06-25T22:10:15.163 に答える