1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
// Check that a projection is applied after an in memory sort.
t = db.jstests_sorti;
t.drop();
t.save( { a:1, b:0 } );
t.save( { a:3, b:1 } );
t.save( { a:2, b:2 } );
t.save( { a:4, b:3 } );
function checkBOrder( query ) {
arr = query.toArray();
order = [];
for( i in arr ) {
a = arr[ i ];
order.push( a.b );
}
assert.eq( [ 0, 2, 1, 3 ], order );
}
checkBOrder( t.find().sort( { a:1 } ) );
checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ) );
t.ensureIndex( { b:1 } );
checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ) );
checkBOrder( t.find( {}, { _id:0, b:1 } ).sort( { a:1 } ).hint( { b:1 } ) );
|