PHP MapReduce Mongodb是否返回所有映射结果以及缩减集?
我试图计算每个“whoisPreset”的“域”数量 例如: 542b151053980df766000000:10 542b151053980df766000002:3 等等 简化文件PHP MapReduce Mongodb是否返回所有映射结果以及缩减集?,php,mongodb,mapreduce,Php,Mongodb,Mapreduce,我试图计算每个“whoisPreset”的“域”数量 例如: 542b151053980df766000000:10 542b151053980df766000002:3 等等 简化文件 > db.Domain.findOne() { "_id" : ObjectId("542b152653980d2467000000"), "whoisPreset" : ObjectId("542b151053980df766000000"), "whoisPresetUpdat
> db.Domain.findOne()
{
"_id" : ObjectId("542b152653980d2467000000"),
"whoisPreset" : ObjectId("542b151053980df766000000"),
"whoisPresetUpdated":false
}
php中的MapReduce
$map = new MongoCode("function() { emit(this.whoisPreset,1); }");
$reduce = new MongoCode("function(k, vals) { ".
"var sum = 0;".
"for (var i in vals) {".
"sum += vals[i];".
"}".
"return sum; }");
$mapReduce = $this->Couch()->command(
[
"mapreduce" => 'Domain',
"map" => $map,
"reduce" => $reduce,
"query" =>
[
'whoisPreset'=>['$ne'=>null,'$exists'=>true],
'$or'=>[
["whoisPresetUpdated"=>['$exists'=>false]],
["whoisPresetUpdated" => false],
["whoisPresetUpdated"=>null]
]
],
"out" => ["merge" => "whoisPresetCounts"]
]);
$counts = $this->Couch()->selectCollection($mapReduce['result'])->find();
foreach ($counts as $tupple) {
print_r($tupple);
}
然后在结果中,我似乎得到了每个省略的输出,以及减少的结果
Array
(
[_id] => MongoId Object
(
[$id] => 542b152653980d2467000000
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542b1e5d53980d8c67000001
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542b1f0f53980d8b67000000
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542b1f7b53980db967000006
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542b1ff453980d8b67000007
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542c15f853980dc904000001
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542c17ed53980db605000001
)
[value] =>
)
Array
(
[_id] => MongoId Object
(
[$id] => 542c6bf053980d1013000000
)
[value] => MongoId Object
(
[$id] => 542b151053980df766000000
)
)
Array
(
[_id] =>
[value] => 7
)
Array
(
[_id] => MongoId Object
(
[$id] => 542b151053980df766000000
)
[value] => 8
)
在底部还有一个计数为7的空id,我不知道
共有8个文档,基本上与这里给出的第一个示例相同。问题是否可能是先前尝试的输出集合上的“合并”?从映射器发出的唯一值是
1
,最坏情况下,“reduce”输出是0
,但此处或其他内容中有几个空白值。尝试只输出到新集合。mapper和reducer都在这里输出一个值,这样零件看起来就可以了。合并似乎是个问题。您是否在没有指定的query
参数的情况下运行了mapReduce命令?或者,如果删除合并的输出集合并重新运行mapReduce作业,它是否仍然包含意外结果(使用null
\u id
?)。