标题:Mongodb MapReduce for PHP 操作   出处:BIWEB开源PHP WMS系统创始人ArthurXF肖飞的blog 时间:Fri, 26 Oct 2012 11:08:02 +0000 作者:ArthurXF 地址:http://www.bizeway.net/read.php/601.htm 内容: 先生成测试数据: selectCollection('test', 'test');    for ($i = 0; $i < 10; $i++) {    $instance->insert(array(    'group_id' => rand(1, 5),    'count'    => rand(1, 5),    ));    } ?> 下面让我们使用group操作,根据group_id分组,汇总计算count,用MapReduce实现: MapReduc用法: db.runCommand( { mapreduce : ,   map : ,   reduce : ,   out :   [, query : ]   [, sort : ]   [, limit : ]   [, keeptemp: ]   [, finalize : ]   [, scope : ]   [, jsMode : true]   [, verbose : true] });参数说明: mapreduc:要操作的目标集合。 map:映射函数(生成键值对序列,作为 reduce 函数参数)。 reduce:统计函数。 query :目标记录过滤。 sort:目标记录排序。 limit:限制目标记录数量。 out:统计结果存放集合(不指定则使用临时集合,在客户端断开后自动删除)。 keeptemp:是否保留临时集合。 finalize:最终处理函数(对 reduce 返回结果进行最终整理后存入结果集合)。 score:向 map、reduce、finalize 导入外部变量。 verbose : 显示详细的时间统计信息。 selectDB('test');    $map = '    function() {    emit(this.group_id, this.count);    }    ';    $reduce = '    function(key, values) {    var sum = 0;    for (var index in values) {    sum += values[index];    }    return sum;    }    ';    $result = $instance->command(array(    'mapreduce' => 'test',    'map'       => $map,    'reduce'    => $reduce,   'out' => 'test_res'    ));        $resData = new Mongo();    $resData = $instance->selectDB('test_res');  $result = $resData->find();   //$result = iterator_to_array($instance->{$result['result']}->find());    var_dump($result);    ?> Generated by Bo-blog 2.0.3 sp1