Map reduce com join entre collections

29/05/2018

0

Olá pessoal, tudo bem?

tenho um exemplo de uma collection, onde preciso contar a quantidade de clicks e emissões de uns usuários. Já consegui fazer map reduce por usuário.
Agora preciso identificar por perfil de usuário qual seria o total de clicks e emissões, mas por idade e gênero, esta informação está em outra collection.
Como posso fazer map reduce fazendo este "join" entre collections?
Segue meu código:

Reduce por usuario:
-----------------------------------------------

first_map = function() { 
   emit(this.UserID, {total_clicks: this.click,total_impresions: this.impresion} );  
}

-- reduce FUNCTION:

first_reduce = function(key, values) {
    
   
    var result = { total_clicks: 0, total_impresions: 0}; 
    
    values.forEach(function(value) 
    {
      result.total_clicks += value.total_clicks;
      result.total_impresions += value.total_impresions;
    });
    
    return  result; 
  }

-- EXECUTION OF THE MAP/REDUCE:

var r = db.training.mapReduce(first_map,first_reduce,{out : "ColTotals"});

r;
db.ColTotals.find();


-----------------------------------------------

Segue um exemplo da collection que contem meus valores para el userid_profile:

db.userid_profile.findOne()

{
"user_ID": 8 , "gender" : 2 , "age" : 4
}


Muito obrigado pelo apoio.
Atenciosamente
Andres Ruiz

Essa dúvida foi gerada a partir de um comentário na aula Map-Reduce - Curso de MongoDB - Aula 19
Andres Quitian

Andres Quitian

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar