Files
mongo/jstests/core/explain5.js
2014-10-13 19:59:21 -04:00

34 lines
1.2 KiB
JavaScript

// 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' );