t = db.sort4; t.drop(); function nice( sort , correct , extra ){ var c = t.find().sort( sort ); var s = ""; c.forEach( function(z){ if ( s.length ) s += ","; s += z.name; if ( z.prename ) s += z.prename; } ); print( tojson( sort ) + "\t" + s ); if ( correct ) assert.eq( correct , s , tojson( sort ) + "(" + extra + ")" ); return s; } t.save({name: 'A', prename: 'B'}) t.save({name: 'A', prename: 'C'}) t.save({name: 'B', prename: 'B'}) t.save({name: 'B', prename: 'D'}) nice( { name:1 } , "AB,AC,BB,BD" , "s1" ); nice( { prename : 1 } , "AB,BB,AC,BD" , "s2" ); nice( {name:1, prename:1} , "AB,AC,BB,BD" , "s3" ); t.save({name: 'A'}) nice( {name:1, prename:1} , "A,AB,AC,BB,BD" , "e1" ); t.save({name: 'C'}) nice( {name:1, prename:1} , "A,AB,AC,BB,BD,C" , "e2" ); // SERVER-282 t.ensureIndex( { name : 1 , prename : 1 } ); nice( {name:1, prename:1} , "A,AB,AC,BB,BD,C" , "e2ia" ); // SERVER-282 t.dropIndexes(); t.ensureIndex( { name : 1 } ); nice( {name:1, prename:1} , "A,AB,AC,BB,BD,C" , "e2ib" ); // SERVER-282