wheat 发表于 2015-7-10 09:27:10

mongodb mapreduce学习

  


for( var i = 1; i < 10001; i++){
db.students.insert({classid:i%400, age:i%100, name:'Tom'+i})
}
db.students.insert({classid:1, age:14, name:'Tom'})
db.students.insert({classid:1, age:12, name:'Jacky'})
db.students.insert({classid:2, age:16, name:'Lily'})
db.students.insert({classid:2, age:9, name:'Tony'})
db.students.insert({classid:2, age:19, name:'Harry'})
db.students.insert({classid:2, age:13, name:'Vincent'})
db.students.insert({classid:1, age:14, name:'Bill'})
db.students.insert({classid:2, age:17, name:'Bruce'})

m = function() {
    emit(this.classid, 1)
}

r = function(key, values) {
   var x = 0;
   values.forEach(
      function(v) { x += v }
   );
    return x;
}
res = db.runCommand({
    mapreduce:"students",
   map:m,
    reduce:r,
    out:"students_res"
});
db.students_res.find()
m = function() {
    emit(this.classid, {cnt:1,name:this.name})
}

r = function(key, values) {
   var x = 0;
   var names="";
   values.forEach(
      function(v)
      {
            x += v.cnt;
            names+=v.name;
      }
   );
    return {classid:key,cnt:x,names:names};
}
res = db.runCommand({
    mapreduce:"students",
   map:m,
    reduce:r,
    out:"students_res"
});
db.students_res.find()
f = function(key, value) { return {classid:key, count:value}; }
res = db.runCommand({
    mapreduce:"students",
    map:m,
    reduce:r,
    out:"students_res",
    finalize:f
});
db.students_res.find()
res = db.runCommand({
   mapreduce:"students",
   map:m,
   reduce:r,
   out:"students_res",
   finalize:f,
   query:{age:{$lt:10}}
});
db.students_res.find()  
页: [1]
查看完整版本: mongodb mapreduce学习