Как передать длинный int из php в mongodb
Я имею дело с длинными целыми.
Я сформировал массив запросов в php, например:
$find_count = array("key"=>$keyword, "type"=>$type, "fromTime"=>array('$gt'=> $fromTimeEpoch, "\$lte" => $toTimeEpoch));
$cursor_count = $coll_count->find($find_count, $projection_count);//Query mongodb. $coll_count is a MongoDB collection.
Здесь $ fromTimeEpoch и $ toTimeEpoch являются длинными переменными.
Когда я отображаю $find_count, $ fromTimeEpoch и $ toTimeEpoch печатаются нормально (что-то вроде 1372617000000)
Однако эти запросы не доходят правильно до сервера Монго. То, что сервер монго получает в виде значений $ fromTimeEpoch и $ toTimeEpoch, является отрицательным целым числом (что-то вроде -1858934720).
Итак, вопрос в том, почему эти ДЛИНЫ конвертируются в отрицательные?
Как правильно передать длинные переменные в php?
ПРИМЕЧАНИЕ: в моей базе данных mongo поле fromTime имеет тип LONG (а не STRING).
1 ответ
Если вы имеете дело со временем и ведете поиск по времени, вы должны использовать 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)));