Как сделать запрос по времени в MongoDB с PHP? - PullRequest
6 голосов
/ 24 сентября 2011

Я хочу запросить коллекцию и получить документы, которые были созданы менее 3 часов назад.

$realtime = date("Y-m-d H:i:s");
$mongotime = New Mongodate(strtotime($realtime));

$mongotime = $mongotime - 3 hours; //PSEUDOCODE
$some_condition = array('time' => array('$lt'=>$mongotime) );

$result = $db->collection->find( $some_condition );

Есть ли эффективный способ поставить

$ some_condition

часть без использования оператора IF в PHP?

Ответы [ 2 ]

9 голосов
/ 24 сентября 2011

Я нашел решение.

$diff = 60 * 60 * 3; //3 hours in seconds

$mongotime = New Mongodate(time()-$diff);

$condition = array('time' => array('$lt'=>$mongotime) );

$result = $db->collection->find( $condition );
1 голос
/ 24 сентября 2011

Сначала получите время за три часа до этого. Затем запрос больше, чем это время:

define('SECONDS_PER_HOUR', 3600);

$mongotime = New Mongodate(time()-3*SECONDS_PER_HOUR);

$condition = array('time' => array('$lt'=>$mongotime));

$result = $db->collection->find($condition);

Нет необходимости выполнять какое-либо преобразование метки времени -> строка -> метки времени (как вы предложили), и вам следует называть используемые вами константы, чтобы было ясно, что они представляют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...