Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB MapReduce(PHP)-获取匹配文档的唯一键_Php_Mongodb_Mapreduce - Fatal编程技术网

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

MongoDB MapReduce(PHP)-获取匹配文档的唯一键,php,mongodb,mapreduce,Php,Mongodb,Mapreduce,我有一个使用大型MongoDB集合的PHP web应用程序。每个Mongo文档都有一个_类型的字段,可以是红色、绿色或蓝色。我有用户提供的条件:groupName=paint-我需要返回与groupName=paint的文档关联的所有键的列表。这是我的查询,它只执行以下操作: $map = new MongoCode(' function(){ var keys = []; Object.keys(this).forEach(function(k){

我有一个使用大型MongoDB集合的PHP web应用程序。每个Mongo文档都有一个_类型的字段,可以是红色、绿色或蓝色。我有用户提供的条件: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的值。我如何才能将其粘贴到返回的每个密钥上?

我很惊讶,在一个大型集合中,它可以内嵌到您的应用程序中。让人惊讶的是,在实际查看MR之前,您是否尝试过首先使用聚合框架完成此操作?那是为这种东西设计的哦是吗?我必须尝试一下聚合框架——我对高级MongoDB非常不熟悉。。。如果有人有这样的例子,我很乐意看到。我很惊讶在文档中找不到一个例子。。。