1

我正在处理长整数。

我在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 是 LONG 变量。

当我回显 $find_count 时,$fromTimeEpoch 和 $toTimeEpoch 打印得很好(类似于 1372617000000)

但是,这些查询无法正确到达 mongo 服务器。mongo 服务器收到的 $fromTimeEpoch 和 $toTimeEpoch 的值是负整数(类似于 -1858934720)。

所以问题是为什么这些 LONG 转换为负数?

在 php 中传递长变量的正确方法是什么?

注意:在我的 mongo 数据库中,“fromTime”字段的类型为 LONG(而不是 STRING)。

4

1 回答 1

0

如果您正在处理时间并按时间搜索,您应该使用 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)));
于 2013-12-13T20:45:57.407 回答