您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

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

2024/4/25 15:05:26发布5次查看
困扰了我一天的问题。首先是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查询mongodb遇到长整型的问题, 感谢原作者分享。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录