Сначала получите время за три часа до этого. Затем запрос больше, чем это время:
define('SECONDS_PER_HOUR', 3600);
$mongotime = New Mongodate(time()-3*SECONDS_PER_HOUR);
$condition = array('time' => array('$lt'=>$mongotime));
$result = $db->collection->find($condition);
Нет необходимости выполнять какое-либо преобразование метки времени -> строка -> метки времени (как вы предложили), и вам следует называть используемые вами константы, чтобы было ясно, что они представляют.