// Test sorting with skipping and multiple candidate query plans. t = db.jstests_sortc; t.drop(); t.save({a: 1}); t.save({a: 2}); function checkA(a, sort, skip, query) { query = query || {}; assert.eq(a, t.find(query).sort(sort).skip(skip)[0].a); } function checkSortAndSkip() { checkA(1, {a: 1}, 0); checkA(2, {a: 1}, 1); checkA(1, {a: 1}, 0, {a: {$gt: 0}, b: null}); checkA(2, {a: 1}, 1, {a: {$gt: 0}, b: null}); checkA(2, {a: -1}, 0); checkA(1, {a: -1}, 1); checkA(2, {a: -1}, 0, {a: {$gt: 0}, b: null}); checkA(1, {a: -1}, 1, {a: {$gt: 0}, b: null}); checkA(1, {$natural: 1}, 0); checkA(2, {$natural: 1}, 1); checkA(2, {$natural: -1}, 0); checkA(1, {$natural: -1}, 1); } checkSortAndSkip(); t.ensureIndex({a: 1}); checkSortAndSkip();