[PHP Mongodb] Implement MapReduce

In previous posti https://sabitlabscode.wordpress.com/2013/07/29/mongodb-understanding-mapreduce/ , saya sudah paparkan tentang mapreduce dan bagaimana cara membuatnya di mongodb. So, how to implement it in PHP? Sebenarnya tidak terlalu jauh berbeda dengan memanggil tabel biasa. Jika anda memiliki tabel “member” misal, anda bisa memanggil semua datanya pada PHP dengan :

             
$result = $database->selectCollection('member')->find();

untuk mapreduce anda dapat memanggil nya sama dengan cara di atas, seperti berikut :

             
$result = $database->selectCollection('your_mapreduce_name')->find();

Dan berikut adalah contoh lengkap mulai dari mendefinisikan mapreduce hingga memanggilnya pada PHP. Pertama kita harus mendefinisikan map dan reduce nya seperti berikut (i use same case with previous post) :

     public function getSiswabyjk()
    {
        try {
            $connection = new Mongo();
            //get your database
            $database = $connection->selectDB('your_database_name');
            //define map function
            $map1=new MongoCode("function(){emit(this.sex,1);}");
            //define reduce function
            $reduce1=new MongoCode("function(key,value){".
                "var count=0;".
                "for(var i=0;i<value.length;i++){".
                "count+=value[i]".
                "}".
                "return count;".
                "}");
            //define map reduce function
            $command = array(
                'mapreduce' => 'your_table_name_here', // set table name
                'map' => $map1, // set map
                'reduce' => $reduce1, // set reduce
                'out' => 'mapreduce_name'  //set name of mapreduce, it use for call mapreduce
            );
            //run mapreduce command
            $database->command($command);
            // get result from mapreduce
            $result = iterator_to_array($database->selectCollection('mapreduce_name')->find());
            return $result;
        }
        catch(MongoConnectionException $e) {
            die("Failed to connect to database ".$e->getMessage());
        }
        catch(MongoException $e) {
            die($e->getMessage());
        }                
    }

Finish, you can see the result from this function..
Happy coding..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: