我想查询一个集合并获取不到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语句?
答案 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 - >时间戳转换(如您所建议的那样),您应该命名您使用的常量,以便清楚它们代表什么。