34 lines
1.2 KiB
JavaScript
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' );
|