MongoDB MapReduce(PHP) - 获取匹配文档的唯一键

时间:2015-08-31 18:04:54

标签: php mongodb mapreduce

我有一个使用大型MongoDB集合的PHP Web应用程序。每个Mongo文档都有一个_type字段,可以是redgreenblue。我有用户提供的标准: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 个答案:

没有答案