麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

PHP驅動MongoDB整數問題的BUG和策略

2020-03-24 16:28:13
字體:
來源:轉載
供稿:網友
本文所說的整數問題,其實并不是MongoDB的問題,而是PHP驅動的問題:MongoDB本身有兩種整數類型,分別是:32位整數和64位整數,但舊版的PHP驅動不管操作系統是32位還是64位,把所有整數都當做32位整數處理,結果導致64位整數被截斷。為了在盡可能保持兼容的前提下解決這個問題,新版PHP驅動加入了mongo.native-long選項,以期在64位操作系統中把整數都當做64位來處理,有興趣的可參考:64-bit integers in MongoDB。那么PHP驅動真的完全解決了整數問題么?NO!在處理group操作的時候還有BUG:為了說明問題,我們先來生成一些測試數據:
?php

ini_set('mongo.native_long', 1);

$instance = new Mongo();

$instance = $instance- selectCollection('test', 'test');

for ($i = 0; $i $i++) {
$instance- insert(array(
'group_id' = rand(1, 5),
'count' = rand(1, 5),
));
}

?
?php

ini_set('mongo.native_long', 1);

$instance = new Mongo();

$instance = $instance- selectCollection('test', 'test');

$keys = array('group_id' =

$initial = array('count' =

$reduce = '
function(obj, prev) {
prev.count += obj.count;
}
';

$result = $instance- group($keys, $initial, $reduce);

var_dump($result);

?
結果和預想的有出入,count沒有實現累加,而是變成了[object Object],目前,如果必須使用group操作,那么有兩種方法可以緩解這個問題:
這兩種方法都是治標不治本的權宜之計,既然當前PHP驅動里group的實現有問題,那我們就繞開它,用其它的方式實現同樣的功能,這個方式就是MapReduce:
?php

ini_set('mongo.native_long', 1);

$instance = new Mongo();

$instance = $instance- selectDB('test');

$map = '
function() {
emit(this.group_id, this.count);
}
';

$reduce = '
function(key, html' target='_blank'>values) {
var sum = 0;

for (var index in values) {
sum += values[index];
}

return sum;
}
';

$result = $instance- command(array(
'mapreduce' = 'test',
'map' = $map,
'reduce' = $reduce
));

$result = iterator_to_array($instance- {$result['result']}- find());

var_dump($result);

?
把大象放冰箱里需要三步,而使用MapReduce僅僅需要Map和Reduce兩步即可,這里有一個PDF文檔生動的說明了MySQL中GROUP BY和MongoDB中MapReduce的對應關系:SQL to MongoDB此外,還有很多資料可供參考,如:MongoDB Aggregation III: Map-Reduce Basics。說明:軟件版本為MongoDB(1.6.5),PECL Mongo(1.1.4)。不同版本結論可能不同。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品成人福利在线播放 | 粉嫩粉嫩一区二区三区在线播放 | 欧美日韩国产一区二区三区在线观看 | 色网在线视频 | 日韩中文一区 | 久久精品九九 | 美女黄视频在线观看 | 久久国产精品电影 | 国产精品一区视频 | 18pao国产成人免费视频 | 看免费5xxaaa毛片 | 男女羞羞在线观看 | 欧美综合在线观看视频 | jizzjizz中国少妇中文 | 欧美视屏一区二区 | 精久久久 | 国产精品麻豆一区二区三区 | 欧美精品成人一区二区三区四区 | tube7xxx| 亚洲午夜久久久久 | 康妮卡特欧美精品一区 | 日日噜噜噜夜夜狠狠久久蜜桃 | 一区二区国产在线 | 一道本不卡一区 | 欧美一级一区二区三区 | 一级成人黄色片 | 中文字幕 亚洲一区 | 一级毛片在线免费观看视频 | 人禽l交免费视频观看 视频 | 日本视频在线播放 | 日本aaaa片毛片免费观看视频 | 欧美va亚洲 | 国产精品久久久久久久久久iiiii | 在线亚洲播放 | 夜间福利网站 | 久久97超碰| 91成人免费看| 欧美福利视频一区二区 | 国产99视频在线观看 | 欧美a视频在线观看 | 国产三级在线观看a |