如何使用PHP在MongoDB中按时间查询?

时间:2011-09-24 12:59:04

标签: php datetime mongodb

我想查询一个集合并获取不到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

部分没有在PHP中使用IF语句?

2 个答案:

答案 0 :(得分:9)

我找到了解决方案。

$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 :(得分:1)

首先在三小时前得到时间。然后查询大于该时间:

define('SECONDS_PER_HOUR', 3600);

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

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

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

无需做一些时间戳 - > string - >时间戳转换(如您所建议的那样),您应该命名您使用的常量,以便清楚它们代表什么。