首页 > php教程 > php手册 > php查询MongoDB遇到长整型的问题

php查询MongoDB遇到长整型的问题

WBOY
发布: 2016-06-06 20:07:49
原创
1067 人浏览过

困扰了我一天的问题。首先是Mongodb副本集。查php的Mongo扩展手册把副本集搞定。然后又是长整型时间的问题。 存进mongo的是java的长整型时间戳。而php是弱类型语言,且php的时间戳是11位。目前还是10位的阶段。转换成java的时间戳需要在后面补零。 // 生成ja

困扰了我一天的问题。首先是Mongodb副本集。查php的Mongo扩展手册把副本集搞定。然后又是长整型时间的问题。

存进mongo的是java的长整型时间戳。而php是弱类型语言,且php的时间戳是11位。目前还是10位的阶段。转换成java的时间戳需要在后面补零。

// 生成java时间戳
$time = (string)$time.'000';
$time = (int)$time;
登录后复制

但是查询结果根本没有数据。把框架的Mongo用Debug打印出查询语句,没有问题。把查询语句直接在shell里查也没问题。但就是没数据。
后来打开Mongo的日志,调整级别为5,这样会记录查询语句。参照这里。

发现我所查询的时间都变成了负数:“{ $gt: -154503944 }

然后万能的google找到了答案。php的长整型需要使用MongoInt64这个类来转换一下。虽然你在php中输出结果是一样的,但查询起来就不一样了。那么在上面的语句后面再加上一句就对了。

// 必须的一步,将长整形使用MongoInt64转换成64位整型
$time = new MongoInt64($time);
登录后复制

Mongo扩展的类参考在这里:http://www.php.net/manual/en/mongoint64.construct.php

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板