使用phpmongodb扩展时比较需要注意的事项_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用phpmongodb扩展时比较需要注意的事项_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3519字,纯文字阅读大概需要6分钟。
内容图文
![使用phpmongodb扩展时比较需要注意的事项_PHP教程](/upload/InfoBanner/zyjiaocheng/178/121ff9ccce2145edba4011ddf8584d32.jpg)
代码如下 | |
|
后来改成数字格式:
代码如下 | |
{ "_id" : ObjectId("504eea97e4b023cf38e34039"), "in_ts" : NumberLong("1347349143699"), "log" : { "guid" : "4D1F3079-7507-F4B0-E7AF-5432D5D8229D", "p" : "View_Prop_YepPage_Zheng", "cid" : "11", "url" : "http://shanghai.haozu.com/rental/broker/n/10481780", "rfpn" : "Listing_V2_IndexPage_All", "site" : "haozu", "agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)", "stamp" : NumberLong("1347349162159"), "cip" : "116.226.70.44", "referer" : "http://shanghai.haozu.com/shop/1464934/", "cstamp" : "1347349323125", "sessid" : "FA798056-F9E7-F961-41E0-CC95C850FA47", "uguid" : "C00FF55B-3D3D-4B31-4318-12345B0DBE64", "pn" : "View_Prop_YepPage_Zheng", "cstparam" : { "proId" : NumberLong(10481780), "brokerId" : "326792", "tradeType" : "2", "userType" : "0", "channel" : "site", "entry" : "1", "COMMID" : "1666" } }, "out_ts" : NumberLong("1347349466083"), "rule" : 0, "status" : "ok", "txid" : 0 }为字符串时,使用下面的查询是正常的 $query = array ('log.stamp' => array ('$gte' => ‘1347346800000’, '$lt' => ‘1347350400000’)); |
但是改为数字后,使用下面的查询,死活没有结果,但是直接在mongo客户端直接查询是有结果的:
代码如下 | |
db.haozu_success.find({'log.stamp':{$gte:1347346800000,$lt:1347350400000}}) |
php手册上也是这么个用法:
代码如下 | |
$query = array ('log.stamp' => array ('$gte' => 1347346800000, '$lt' => 1347350400000)); |
花了好大一会找原因,开始时怀疑是php扩展的bug导致,经过一番思考。突然想到可能是类型问题导致,发现手册上有Types 介绍,所以正确的用法如下:
代码如下 | |
$query = array ('log.stamp' => array ('$gte' => new MongoInt64($time_range['start']), '$lt' => new MongoInt64($time_range['end']))); |
另外,在使用mapreduce进行数据统计时,为了防止cursor出现超时异常,还需要设置一下超时时间
代码如下 | |
$map = new MongoCode ( ' function(){ var prop_id=this.log.cstparam.proId; var key=this.log.site+prop_id emit(key,{"channel":this.log.site,"prop_id":prop_id,"count":1}); } ' ); $reduce = new MongoCode ( ' function(key,emits){ var total=0; for(var i in emits){ total+=emits[i].count; } return {"channel":emits[0].channel,"prop_id":eval(emits[0].prop_id),"count":total}; } ' ); $this->mongo_db->command ( array ('mapreduce' => $collection_name, 'map' => $map, 'reduce' => $reduce, 'out' => $tmp_result, 'query' => $query),array('timeout'=>self::MONGO_CURSOR_TIMEOUT) ); |
http://www.bkjia.com/PHPjc/629069.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629069.htmlTechArticle最近在使用php的mongo 扩展进行数据统计计算,其中有一个时间戳字段,由于精确到了毫秒,长度有13位,但由于开始的时候是以字符串的形式...
内容总结
以上是互联网集市为您收集整理的使用phpmongodb扩展时比较需要注意的事项_PHP教程全部内容,希望文章能够帮你解决使用phpmongodb扩展时比较需要注意的事项_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。