Eder Cuer
Eder Cuer

Reputation: 45

Search Map / Reduce

got a job comparison sql and nosql data for my report for the college course. I'm doing a inner join testing, and mongo did something equivalent to the map reduce but am having problems.

Find all records are correct, fetch rows from a specific id is also correct, but I can not search for text, or other attribute.

My collections:

y_um_milhao{id_y_um_milhao, col_descricao}
x_um_milhao{id_x_um_milhao, col_decimal, fk_y_um_milhao}

My map/reduce:

var mapX_um_milhao = function(){
   var output = {id_x: this.x_um_milhao,olDecimal:this.col_decimal, id_x:this.id_x_um_milhao}
   emit (this.id_x_um_milhao, output);
};
var mapY_um_milhao = function(){
   var output = {y_id: this.y_um_milhao, colDescricao:this.col_descricao, id_y:this.id_y_um_milhao}
   emit(this.id_y_um_milhao, output);
};

var reduce_um_milhao = function(key, values){
   var outs = {colDescricao:null, id_y:null, colDecimal:null, id_x:null};

   values.forEach(function(v){

       if(outs.colDescricao == null){
          outs.colDescricao = v.colDescricao
       }
       if(outs.id_y == null){
          outs.id_y = v.id_y
       }
       if(outs.colDecimal == null){
          outs.colDecimal = v.colDecimal
       }
       if(outs.id_x == null){
          outs.id_x = v.id_x
       }
   });
   return outs;
};

result = db.x_um_milhao.mapReduce(mapX_um_milhao, reduce_um_milhao, {out: {reduce: 'x_y'}});
result = db.y_um_milhao.mapReduce(mapY_um_milhao, reduce_um_milhao, {out: {reduce: 'x_y'}});

Seeking all records:

db.x_y.find()

Seeking registration by id:

db.x_y.find({_id:1)

Result:

{ "_id" : 1, "value" : { "colDescricao" : "Teste TCC1", "id_y" : 1, "colDecimal" : 13.38, "id_x" : 1 } }

Now I can not search for "colDescricao" how could he do?

PS: Sorry for the English, not speak and used the google translator

Upvotes: 1

Views: 50

Answers (1)

vmr
vmr

Reputation: 1935

You can search for "colDescricao" like this:

db.x_y.find({value.colDescricao : "Teste TCC1"})

Upvotes: 2

Related Questions