@@ -416,7 +416,36 @@ public void testMapReduceInline(){
416
416
assertEquals ( 1 , m .get ( "d" ).intValue () );
417
417
418
418
}
419
-
419
+
420
+ @ Test
421
+ public void testMapReduceInlineWScope (){
422
+ DBCollection c = _db .getCollection ( "jmr2" );
423
+ c .drop ();
424
+
425
+ c .save ( new BasicDBObject ( "x" , new String []{ "a" , "b" } ) );
426
+ c .save ( new BasicDBObject ( "x" , new String []{ "b" , "c" } ) );
427
+ c .save ( new BasicDBObject ( "x" , new String []{ "c" , "d" } ) );
428
+
429
+ Map <String , Object > scope = new HashMap <String , Object >();
430
+ scope .put ("exclude" , "a" );
431
+
432
+ MapReduceCommand mrc = new MapReduceCommand ( c , "function(){ for ( var i=0; i<this.x.length; i++ ){ if(this.x[i] != exclude) emit( this.x[i] , 1 ); } }" ,
433
+ "function(key,values){ var sum=0; for( var i=0; i<values.length; i++ ) sum += values[i]; return sum;}" , null , MapReduceCommand .OutputType .INLINE , null );
434
+ mrc .setScope ( scope );
435
+
436
+ MapReduceOutput out = c .mapReduce ( mrc );
437
+ Map <String ,Integer > m = new HashMap <String ,Integer >();
438
+ for ( DBObject r : out .results () ){
439
+ m .put ( r .get ( "_id" ).toString () , ((Number )(r .get ( "value" ))).intValue () );
440
+ }
441
+
442
+ assertEquals ( 3 , m .size () );
443
+ assertEquals ( 2 , m .get ( "b" ).intValue () );
444
+ assertEquals ( 2 , m .get ( "c" ).intValue () );
445
+ assertEquals ( 1 , m .get ( "d" ).intValue () );
446
+
447
+ }
448
+
420
449
String _testMulti ( DBCollection c ){
421
450
String s = "" ;
422
451
for ( DBObject z : c .find ().sort ( new BasicDBObject ( "_id" , 1 ) ) ){
0 commit comments