// Check explain results for a plan that uses an index to obtain the requested sort order. t = db.jstests_explain5; t.drop(); t.ensureIndex({a: 1}); t.ensureIndex({b: 1}); for (i = 0; i < 1000; ++i) { t.save({a: i, b: i % 3}); } // Query with an initial set of documents. var explain1 = t.find({a: {$gte: 0}, b: 2}).sort({a: 1}).hint({a: 1}).explain("executionStats"); printjson(explain1); var stats1 = explain1.executionStats; assert.eq(333, stats1.nReturned, 'wrong nReturned for explain1'); assert.eq(1000, stats1.totalKeysExamined, 'wrong totalKeysExamined for explain1'); for (i = 1000; i < 2000; ++i) { t.save({a: i, b: i % 3}); } // Query with some additional documents. var explain2 = t.find({a: {$gte: 0}, b: 2}).sort({a: 1}).hint({a: 1}).explain("executionStats"); printjson(explain2); var stats2 = explain2.executionStats; assert.eq(666, stats2.nReturned, 'wrong nReturned for explain2'); assert.eq(2000, stats2.totalKeysExamined, 'wrong totalKeysExamined for explain2');