【发布时间】:2013-07-01 20:32:24
【问题描述】:
我正在处理长整数。
我在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)。
【问题讨论】:
-
我不太记得为什么它们是负面的,我总是忘记它,但我知道它在技术上是正确的(它远远超过 32 位限制)它没有多大用处给你。如果您使用php.net/manual/en/class.mongoint64.php 或运行时变量(大多数时候推荐的方法)php.net/manual/en/mongo.configuration.php#ini.mongo.native-long
-
@Sammaye:使用 ini_set('mongo.native_long', 1) 有效!天哪..我为此浪费了 1 个小时。非常感谢!
标签: php mongodb long-integer