Skip to content

Instantly share code, notes, and snippets.

@heukirne
Created July 7, 2014 18:08

Revisions

  1. heukirne created this gist Jul 7, 2014.
    45 changes: 45 additions & 0 deletions mapreduceI2.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@
    db.i2.aggregate(
    { $sort: { _id : 1} },
    { $group: { _id: "$c" ,
    i : { $first : "$i" },
    m : { $first : "$m" },
    r : { $first : "$r" },
    j : { $first : "$j" },
    } },
    { $out: 'i2_group' }
    );

    var map = function(){
    emit(this._id, this);
    };

    var reduce = function(key, regs) {
    return regs;
    }

    var finalize = function(key, r){
    if (r.j != '') { return 8; }
    if (r.r == 18) { return 4; }
    if (r.r == 8) { return 2; }
    if (r.i == 1) {
    switch (r.m) {
    case 1: return 10; break;
    case 2:
    case 7: return 1; break;
    case 3: return 5; break;
    case 4:
    case 8: return 9; break;
    case 5: return 4; break;
    case 6: return 6; break;
    }
    }
    return 7;
    }

    var res = db.i2_group.mapReduce( map, reduce,
    { finalize: finalize,
    out: { replace : "alunoI2" },
    //sort: { "_id":1 },
    jsMode: true,
    });
    //printjson(res);