国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

解析-使用php mongodb擴(kuò)展時(shí) 需要注意的事項(xiàng)

2020-03-22 17:19:29
字體:
供稿:網(wǎng)友
最近在使用php的mongo 擴(kuò)展進(jìn)行數(shù)據(jù)統(tǒng)計(jì)計(jì)算,其中有一個(gè)時(shí)間戳字段,由于精確到了毫秒,長(zhǎng)度有13位,但由于開始的時(shí)候是以字符串的形式存儲(chǔ):
復(fù)制代碼 代碼如下:
{ "_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" : "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 }

后來改成數(shù)字格式:
復(fù)制代碼 代碼如下:
{ "_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 }

為字符串時(shí),使用下面的查詢是正常的
復(fù)制代碼 代碼如下:
$query = array ('log.stamp' = array ('$gte' = ‘1347346800000', '$lt' = ‘1347350400000'));

但是改為數(shù)字后,使用下面的查詢,死活沒有結(jié)果,但是直接在mongo客戶端直接查詢是有結(jié)果的:
復(fù)制代碼 代碼如下:
db.haozu_success.find({'log.stamp':{$gte:1347346800000,$lt:1347350400000}})

php手冊(cè)上也是這么個(gè)用法:
復(fù)制代碼 代碼如下:
$query = array ('log.stamp' = array ('$gte' = 1347346800000, '$lt' = 1347350400000));

花了好大一會(huì)找原因,開始時(shí)懷疑是php擴(kuò)展的bug導(dǎo)致,經(jīng)過一番思考。突然想到可能是類型問題導(dǎo)致,發(fā)現(xiàn)手冊(cè)上有Types 介紹,所以正確的用法如下:
復(fù)制代碼 代碼如下:
$query = array ('log.stamp' = array ('$gte' = new MongoInt64($time_range['start']), '$lt' = new MongoInt64($time_range['end'])));

另外,在使用mapreduce進(jìn)行數(shù)據(jù)統(tǒng)計(jì)時(shí),為了防止cursor出現(xiàn)超時(shí)異常,還需要設(shè)置一下超時(shí)時(shí)間
復(fù)制代碼 代碼如下:
$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) );

PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南漳县| 招远市| 罗山县| 荣昌县| 江油市| 海伦市| 中西区| 密云县| 滁州市| 工布江达县| 泸水县| 区。| 四子王旗| 通辽市| 仁怀市| 南昌市| 双辽市| 应城市| 合肥市| 兴仁县| 灵石县| 原阳县| 班戈县| 华坪县| 长治市| 西青区| 林西县| 明溪县| 永修县| 庆城县| 丰台区| 鹤峰县| 顺平县| 龙岩市| 高台县| 苏尼特左旗| 五原县| 巴塘县| 长春市| 灵丘县| 高尔夫|