Está en la página 1de 3

Taller

NELSON ENRIQUE OSPINA ARIAS

1. Cuente los restaurantes que están entre las latitudes -75, -74 y las longitudes 40 y 42

var mapFunction = function() {    

      if( (this.address.coord[0] >=-75)&(this.address.coord[0] <=-74)   ){


    if((this.address.coord[1] >=-40)&(this.address.coord[0] <=42)){
      emit(this.name,1);
      };
      };
};

var reduceFunction = function (lista) {


     return (lista.length);
};

En el collect resultante hacer el count de registros

2. Calcule el promedio de los puntajes( score ) agrupados por zipcode. Sugerencia: Tenga en
cuenta que antes debe calcular el puntaje promedio por restaurante.
 var mapFunction = function() {    
     suma=0
     cont=0
     for(i=0; i < this.grades.length; i=i+1){
     suma = suma + this.grades[i].score;
     cont=cont+1
     };
     val= suma/cont;
     emit(this.address.zipcode, val);  
 };

 var reduceFunction = function (zips, prome) {
     return Array.avg(prome)
 };

 db.restaurantes.mapReduce(
 mapFunction,
 reduceFunction,
 "out_avg_rest"
 );

3. Liste el restaurante top (de acuerdo a su puntaje promedio) por cada tipo de cuisine .

 var mapFunction = function() {    


 suma=0
 cont=0
     for(i=0; i < this.grades.length; i=i+1){
     suma = suma + this.grades[i].score;
     cont=cont+1
     };
     val= suma/cont;
     emit(this.cuisine, {value: val, name: this.name});
 };

 var reduceFunction = function (cuisine, resto_prome) {
     max=0;
     nam="na";
     for(i=0; i<resto_prome.length ; i=i+1){
     if(resto_prome[i].value > max ){
     max  = resto_prome[i].value;
     nam = resto_prome[i].name;
          };
     };
     tupla = {value: max, name: nam};
     return tupla
 };

 db.restaurantes.mapReduce(
 mapFunction,
 reduceFunction,
 "out_mejores"
 );

Se seleccionó el nombre pero con modificar la línea emit de la función map es posible obtener
otro atributo como por ejemplo el restaurant_ID

También podría gustarte