diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-12-08 11:12:17 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-12-08 11:12:17 -0500 |
commit | 78964d14046fc5bbd417aa38b05b557b4e1e8861 (patch) | |
tree | dd8b85ae3048909ba7db40ba4a764fea32312e59 /jstests/mr5.js | |
parent | 03b5ae207815cb07419cd38f4d0d3f8082c26e4f (diff) | |
download | mongo-78964d14046fc5bbd417aa38b05b557b4e1e8861.tar.gz |
another mr test
Diffstat (limited to 'jstests/mr5.js')
-rw-r--r-- | jstests/mr5.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/jstests/mr5.js b/jstests/mr5.js new file mode 100644 index 00000000000..dbcb5be3cc4 --- /dev/null +++ b/jstests/mr5.js @@ -0,0 +1,39 @@ + +t = db.mr5; +t.drop(); + +t.save( { "partner" : 1, "visits" : 9 } ) +t.save( { "partner" : 2, "visits" : 9 } ) +t.save( { "partner" : 1, "visits" : 11 } ) +t.save( { "partner" : 1, "visits" : 30 } ) +t.save( { "partner" : 2, "visits" : 41 } ) +t.save( { "partner" : 2, "visits" : 41 } ) + +m = function(){ + emit( this.partner , { stats : [ this.visits ] } ) +} + +r = function( k , v ){ + var stats = []; + var total = 0; + for ( var i=0; i<v.length; i++ ){ + for ( var j in v[i].stats ) { + stats.push( v[i].stats[j] ) + total += v[i].stats[j]; + } + } + return { stats : stats , total : total } +} + +res = t.mapReduce( m , r , { scope : { xx : 1 } } ); +res.find().forEach( printjson ) + +z = res.convertToSingleObject() +assert.eq( 2 , z.keySet().length , "A" ) +assert.eq( [ 9 , 11 , 30 ] , z["1"].stats , "B" ) +assert.eq( [ 9 , 41 , 41 ] , z["2"].stats , "B" ) + + +res.drop() + + |