t = db.sort6; function get( x ){ return t.find().sort( { c : x } ).map( function(z){ return z._id; } ); } // part 1 t.drop(); t.insert({_id:1,c:null}) t.insert({_id:2,c:1}) t.insert({_id:3,c:2}) assert.eq( [3,2,1] , get( -1 ) , "A1" ) // SERVER-635 assert.eq( [1,2,3] , get( 1 ) , "A2" ) t.ensureIndex( { c : 1 } ); assert.eq( [3,2,1] , get( -1 ) , "B1" ) assert.eq( [1,2,3] , get( 1 ) , "B2" ) // part 2 t.drop(); t.insert({_id:1}) t.insert({_id:2,c:1}) t.insert({_id:3,c:2}) assert.eq( [3,2,1] , get( -1 ) , "C1" ) // SERVER-635 assert.eq( [1,2,3] , get( 1 ) , "C2" ) t.ensureIndex( { c : 1 } ); assert.eq( [3,2,1] , get( -1 ) , "D1" ) assert.eq( [1,2,3] , get( 1 ) , "X2" )