MongoDB MapReduce (PHP) — получает уникальные ключи соответствующих документов

У меня есть веб-приложение PHP, которое использует большую коллекцию MongoDB. Каждый монго документ имеет _type поле, которое может быть red, green, или же blue, У меня есть критерии, предоставленные пользователем: groupName = "paint" — Мне нужно вернуть список всех ключей, связанных с документами, где groupName = "paint", Это мой запрос, который делает именно это:

$map = new MongoCode('
function(){
var keys = [];
Object.keys(this).forEach(function(k){
if(k != "_id" && k != "_type"){
keys.push(k);
}
})
emit(this.type,{"keys":keys});
}
');

$reduce = new MongoCode('
function(key,values){
var uniqueKeys = {};
var result = [];
values.forEach(function(value){
value.keys.forEach(function(k){
if(!uniqueKeys[k]){
uniqueKeys[k] = 1;
result.push(k);
}
})
})
return {"keys":result};
}
');

$keyName = "groupName";
$keyValue = "paint";

$commandOutput = $db->command(array(
'mapreduce' => 'searchCollection', // collection name
'map' => $map,
'reduce' => $reduce,
'query' => array($keyName => $keyValue),
"out" => 'groupNameKeysCollection' // outputting to a collection
));

Это работает очень хорошо, но мне нужно знать ценность _type за каждый ключ, который выплевывает. Как я могу прикрепить это к каждому из возвращенных ключей?

0

Решение

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

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

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

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