diff options
-rw-r--r-- | db/mr.cpp | 2 | ||||
-rw-r--r-- | jstests/mr1.js | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/db/mr.cpp b/db/mr.cpp index 4521f7631ca..4ab3ccf9bb0 100644 --- a/db/mr.cpp +++ b/db/mr.cpp @@ -235,6 +235,8 @@ namespace mongo { s->localConnect( database->name.c_str() ); string resultColl = tempCollectionName( cmdObj.firstElement().valuestr() ); + if ( cmdObj["out"].type() == String ) + resultColl = database->name + "." + cmdObj["out"].valuestr(); string resultCollShort = resultColl.substr( database->name.size() + 1 ); log(1) << "\t resultColl: " << resultColl << " short: " << resultCollShort << endl; db.dropCollection( resultColl ); diff --git a/jstests/mr1.js b/jstests/mr1.js index 82a2e8e7cf5..f999b9d3d64 100644 --- a/jstests/mr1.js +++ b/jstests/mr1.js @@ -49,6 +49,17 @@ assert.eq( 1 , z.b , "C2" ); assert.eq( 2 , z.c , "C3" ); x.drop(); +res = db.runCommand( { mapreduce : "mr1" , out : "foo" , map : m , reduce : r , query : { x : { "$gt" : 2 } } } ); +assert.eq( 2 , res.numObjects , "B2" ); +assert.eq( "foo" , res.result , "B2-c" ); +x = db[res.result]; +z = {}; +x.find().forEach( function(a){ z[a.key] = a.value.count; } ); +assert.eq( 1 , z.a , "C1a" ); +assert.eq( 1 , z.b , "C2a" ); +assert.eq( 2 , z.c , "C3a" ); +x.drop(); + for ( i=5; i<1000; i++ ){ |