PHP MapReduce Mongodb возвращает все результаты карты, а также сокращенный набор?

Я пытаюсь подсчитать, сколько «доменов» для каждого «whoisPreset»,

например:
542b151053980df766000000: 10
542b151053980df766000002: 3

так далее..

Упрощенный документ

> db.Domain.findOne()
{
"_id" : ObjectId("542b152653980d2467000000"),
"whoisPreset" : ObjectId("542b151053980df766000000"),
"whoisPresetUpdated":false
}

MapReduce в php

        $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
)

Также внизу есть нулевой _id с 7 счетом, который я не получаю ..

Есть 8 документов, практически идентичных первому приведенному там примеру.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]