Как передать длинный 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)));
Другие вопросы по тегам