diff options
Diffstat (limited to 'jstests/sharding/sort1.js')
-rw-r--r-- | jstests/sharding/sort1.js | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/jstests/sharding/sort1.js b/jstests/sharding/sort1.js index 0edb7a7..e2b287e 100644 --- a/jstests/sharding/sort1.js +++ b/jstests/sharding/sort1.js @@ -2,7 +2,7 @@ s = new ShardingTest( "sort1" , 2 , 0 , 2 ) s.adminCommand( { enablesharding : "test" } ); -s.adminCommand( { shardcollection : "test.data" , key : { num : 1 } } ); +s.adminCommand( { shardcollection : "test.data" , key : { 'sub.num' : 1 } } ); db = s.getDB( "test" ); @@ -11,16 +11,16 @@ N = 100 forward = [] backward = [] for ( i=0; i<N; i++ ){ - db.data.insert( { _id : i , num : i , x : N - i } ) + db.data.insert( { _id : i , sub: {num : i , x : N - i }} ) forward.push( i ) backward.push( ( N - 1 ) - i ) } db.getLastError(); -s.adminCommand( { split : "test.data" , middle : { num : 33 } } ) -s.adminCommand( { split : "test.data" , middle : { num : 66 } } ) +s.adminCommand( { split : "test.data" , middle : { 'sub.num' : 33 } } ) +s.adminCommand( { split : "test.data" , middle : { 'sub.num' : 66 } } ) -s.adminCommand( { movechunk : "test.data" , find : { num : 50 } , to : s.getOther( s.getServer( "test" ) ).name } ); +s.adminCommand( { movechunk : "test.data" , find : { 'sub.num' : 50 } , to : s.getOther( s.getServer( "test" ) ).name } ); assert.eq( 3 , s.config.chunks.find().itcount() , "A1" ); @@ -28,31 +28,31 @@ temp = s.config.chunks.find().sort( { min : 1 } ).toArray(); assert.eq( temp[0].shard , temp[2].shard , "A2" ); assert.neq( temp[0].shard , temp[1].shard , "A3" ); -temp = db.data.find().sort( { num : 1 } ).toArray(); +temp = db.data.find().sort( { 'sub.num' : 1 } ).toArray(); assert.eq( N , temp.length , "B1" ); for ( i=0; i<100; i++ ){ - assert.eq( i , temp[i].num , "B2" ) + assert.eq( i , temp[i].sub.num , "B2" ) } -db.data.find().sort( { num : 1 } ).toArray(); -s.getServer("test").getDB( "test" ).data.find().sort( { num : 1 } ).toArray(); +db.data.find().sort( { 'sub.num' : 1 } ).toArray(); +s.getServer("test").getDB( "test" ).data.find().sort( { 'sub.num' : 1 } ).toArray(); -a = Date.timeFunc( function(){ z = db.data.find().sort( { num : 1 } ).toArray(); } , 200 ); +a = Date.timeFunc( function(){ z = db.data.find().sort( { 'sub.num' : 1 } ).toArray(); } , 200 ); assert.eq( 100 , z.length , "C1" ) -b = 1.5 * Date.timeFunc( function(){ z = s.getServer("test").getDB( "test" ).data.find().sort( { num : 1 } ).toArray(); } , 200 ); +b = 1.5 * Date.timeFunc( function(){ z = s.getServer("test").getDB( "test" ).data.find().sort( { 'sub.num' : 1 } ).toArray(); } , 200 ); assert.eq( 67 , z.length , "C2" ) print( "a: " + a + " b:" + b + " mongos slow down: " + Math.ceil( 100 * ( ( a - b ) / b ) ) + "%" ) // -- secondary index sorting -function getSorted( by , want , dir , proj ){ +function getSorted( by , dir , proj ){ var s = {} s[by] = dir || 1; printjson( s ) var cur = db.data.find( {} , proj || {} ).sort( s ) - return terse( cur.map( function(z){ return z[want]; } ) ); + return terse( cur.map( function(z){ return z.sub.num; } ) ); } function terse( a ){ @@ -68,14 +68,22 @@ function terse( a ){ forward = terse(forward); backward = terse(backward); -assert.eq( forward , getSorted( "num" , "num" , 1 ) , "D1" ) -assert.eq( backward , getSorted( "num" , "num" , -1 ) , "D2" ) +assert.eq( forward , getSorted( "sub.num" , 1 ) , "D1" ) +assert.eq( backward , getSorted( "sub.num" , -1 ) , "D2" ) -assert.eq( backward , getSorted( "x" , "num" , 1 ) , "D3" ) -assert.eq( forward , getSorted( "x" , "num" , -1 ) , "D4" ) +assert.eq( backward , getSorted( "sub.x" , 1 ) , "D3" ) +assert.eq( forward , getSorted( "sub.x" , -1 ) , "D4" ) -assert.eq( backward , getSorted( "x" , "num" , 1 , { num : 1 } ) , "D5" ) -assert.eq( forward , getSorted( "x" , "num" , -1 , { num : 1 } ) , "D6" ) +assert.eq( backward , getSorted( "sub.x" , 1 , { 'sub.num' : 1 } ) , "D5" ) +assert.eq( forward , getSorted( "sub.x" , -1 , { 'sub.num' : 1 } ) , "D6" ) +assert.eq( backward , getSorted( "sub.x" , 1 , { 'sub' : 1 } ) , "D7" ) +assert.eq( forward , getSorted( "sub.x" , -1 , { 'sub' : 1 } ) , "D8" ) + +assert.eq( backward , getSorted( "sub.x" , 1 , { '_id' : 0 } ) , "D9" ) +assert.eq( forward , getSorted( "sub.x" , -1 , { '_id' : 0 } ) , "D10" ) + +assert.eq( backward , getSorted( "sub.x" , 1 , { '_id' : 0, 'sub.num':1 } ) , "D11" ) +assert.eq( forward , getSorted( "sub.x" , -1 , { '_id' : 0, 'sub.num':1 } ) , "D12" ) s.stop(); |