Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Update jstests for new query optimizer

  • Loading branch information...
commit 72f2a51747d29bc28f9407ebbab11b75256c305a 1 parent b257287
@astaple astaple authored
View
20 jstests/cursor3.js
@@ -17,18 +17,18 @@ function testConstrainedFindWithOrdering( db ) {
r.save( { a: 2 } );
r.ensureIndex( { a: 1 } );
- checkResults( [ 1 ], r.find( { a: 1 } ).sort( { a: 1 } ) );
- checkResults( [ 1 ], r.find( { a: 1 } ).sort( { a: -1 } ) );
+ checkResults( [ 1 ], r.find( { a: 1 } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+ checkResults( [ 1 ], r.find( { a: 1 } ).sort( { a: -1 } ).hint( { a: 1 } ) );
- checkResults( [ 1, 2 ], r.find( { a: { $gt: 0 } } ).sort( { a: 1 } ) );
- checkResults( [ 2, 1 ], r.find( { a: { $gt: 0 } } ).sort( { a: -1 } ) );
- checkResults( [ 1, 2 ], r.find( { a: { $gte: 1 } } ).sort( { a: 1 } ) );
- checkResults( [ 2, 1 ], r.find( { a: { $gte: 1 } } ).sort( { a: -1 } ) );
+ checkResults( [ 1, 2 ], r.find( { a: { $gt: 0 } } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+ checkResults( [ 2, 1 ], r.find( { a: { $gt: 0 } } ).sort( { a: -1 } ).hint( { a: 1 } ) );
+ checkResults( [ 1, 2 ], r.find( { a: { $gte: 1 } } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+ checkResults( [ 2, 1 ], r.find( { a: { $gte: 1 } } ).sort( { a: -1 } ).hint( { a: 1 } ) );
- checkResults( [ 0, 1 ], r.find( { a: { $lt: 2 } } ).sort( { a: 1 } ) );
- checkResults( [ 1, 0 ], r.find( { a: { $lt: 2 } } ).sort( { a: -1 } ) );
- checkResults( [ 0, 1 ], r.find( { a: { $lte: 1 } } ).sort( { a: 1 } ) );
- checkResults( [ 1, 0 ], r.find( { a: { $lte: 1 } } ).sort( { a: -1 } ) );
+ checkResults( [ 0, 1 ], r.find( { a: { $lt: 2 } } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+ checkResults( [ 1, 0 ], r.find( { a: { $lt: 2 } } ).sort( { a: -1 } ).hint( { a: 1 } ) );
+ checkResults( [ 0, 1 ], r.find( { a: { $lte: 1 } } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+ checkResults( [ 1, 0 ], r.find( { a: { $lte: 1 } } ).sort( { a: -1 } ).hint( { a: 1 } ) );
}
testConstrainedFindWithOrdering( db );
View
28 jstests/cursor4.js
@@ -23,25 +23,25 @@ function testConstrainedFindMultiFieldSorting( db ) {
reverseEntries = entries.slice();
reverseEntries.reverse();
- checkResults( entries.slice( 2, 4 ), r.find( { a: 1, b: 1 } ).sort( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 2, 4 ), r.find( { a: 1, b: 1 } ).sort( { a: -1, b: -1 } ) );
+ checkResults( entries.slice( 2, 4 ), r.find( { a: 1, b: 1 } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 2, 4 ), r.find( { a: 1, b: 1 } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 2, 5 ), r.find( { a: { $gt: 0 } } ).sort( { a: 1, b: 1 } ) );
- checkResults( reverseEntries.slice( 0, 3 ), r.find( { a: { $gt: 0 } } ).sort( { a: -1, b: -1 } ) );
- checkResults( entries.slice( 0, 4 ), r.find( { a: { $lt: 2 } } ).sort( { a: 1, b: 1 } ) );
- checkResults( reverseEntries.slice( 1, 5 ), r.find( { a: { $lt: 2 } } ).sort( { a: -1, b: -1 } ) );
+ checkResults( entries.slice( 2, 5 ), r.find( { a: { $gt: 0 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( reverseEntries.slice( 0, 3 ), r.find( { a: { $gt: 0 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 0, 4 ), r.find( { a: { $lt: 2 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( reverseEntries.slice( 1, 5 ), r.find( { a: { $lt: 2 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 4, 5 ), r.find( { a: { $gt: 0 }, b: { $lt: 1 } } ).sort( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 2, 4 ), r.find( { a: { $gt: 0 }, b: { $gt: 0 } } ).sort( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 4, 5 ), r.find( { a: { $gt: 0 }, b: { $lt: 1 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 2, 4 ), r.find( { a: { $gt: 0 }, b: { $gt: 0 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
- checkResults( reverseEntries.slice( 0, 1 ), r.find( { a: { $gt: 0 }, b: { $lt: 1 } } ).sort( { a: -1, b: -1 } ) );
- checkResults( reverseEntries.slice( 1, 3 ), r.find( { a: { $gt: 0 }, b: { $gt: 0 } } ).sort( { a: -1, b: -1 } ) );
+ checkResults( reverseEntries.slice( 0, 1 ), r.find( { a: { $gt: 0 }, b: { $lt: 1 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( reverseEntries.slice( 1, 3 ), r.find( { a: { $gt: 0 }, b: { $gt: 0 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 0, 1 ), r.find( { a: { $lt: 2 }, b: { $lt: 1 } } ).sort( { a: 1, b: 1 } ) );
- checkResults( entries.slice( 1, 4 ), r.find( { a: { $lt: 2 }, b: { $gt: 0 } } ).sort( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 0, 1 ), r.find( { a: { $lt: 2 }, b: { $lt: 1 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( entries.slice( 1, 4 ), r.find( { a: { $lt: 2 }, b: { $gt: 0 } } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
- checkResults( reverseEntries.slice( 4, 5 ), r.find( { a: { $lt: 2 }, b: { $lt: 1 } } ).sort( { a: -1, b: -1 } ) );
- checkResults( reverseEntries.slice( 1, 4 ), r.find( { a: { $lt: 2 }, b: { $gt: 0 } } ).sort( { a: -1, b: -1 } ) );
+ checkResults( reverseEntries.slice( 4, 5 ), r.find( { a: { $lt: 2 }, b: { $lt: 1 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
+ checkResults( reverseEntries.slice( 1, 4 ), r.find( { a: { $lt: 2 }, b: { $gt: 0 } } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
}
testConstrainedFindMultiFieldSorting( db );
View
8 jstests/cursor5.js
@@ -26,11 +26,11 @@ function testBoundsWithSubobjectIndexes( db ) {
rIdx = { "a.d": -1, a: -1, e: 1 };
r.ensureIndex( idx );
- checkResults( [ z[ 0 ], z[ 4 ], z[ 2 ] ], r.find( { e: 4 } ).sort( idx ) );
- checkResults( [ z[ 1 ], z[ 3 ] ], r.find( { e: { $gt: 4 }, "a.b": 1 } ).sort( idx ) );
+ checkResults( [ z[ 0 ], z[ 4 ], z[ 2 ] ], r.find( { e: 4 } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 1 ], z[ 3 ] ], r.find( { e: { $gt: 4 }, "a.b": 1 } ).sort( idx ).hint( idx ) );
- checkResults( [ z[ 2 ], z[ 4 ], z[ 0 ] ], r.find( { e: 4 } ).sort( rIdx ) );
- checkResults( [ z[ 3 ], z[ 1 ] ], r.find( { e: { $gt: 4 }, "a.b": 1 } ).sort( rIdx ) );
+ checkResults( [ z[ 2 ], z[ 4 ], z[ 0 ] ], r.find( { e: 4 } ).sort( rIdx ).hint( idx ) );
+ checkResults( [ z[ 3 ], z[ 1 ] ], r.find( { e: { $gt: 4 }, "a.b": 1 } ).sort( rIdx ).hint( idx ) );
}
testBoundsWithSubobjectIndexes( db );
View
54 jstests/cursor6.js
@@ -23,45 +23,58 @@ function checkExplain( e, idx, reverse, nScanned ) {
}
function check( indexed ) {
- e = r.find().sort( { a: 1, b: 1 } ).explain();
- checkExplain( e, false, false, 4 );
- f = r.find().sort( { a: 1, b: 1 } );
+ var hint;
+ if ( indexed ) {
+ hint = { a: 1, b: -1 };
+ } else {
+ hint = { $natural: 1 };
+ }
+
+ e = r.find().sort( { a: 1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: 1, b: 1 } ).hint( hint );
eq( z[ 0 ], f[ 0 ] );
eq( z[ 1 ], f[ 1 ] );
eq( z[ 2 ], f[ 2 ] );
eq( z[ 3 ], f[ 3 ] );
- e = r.find().sort( { a: 1, b: -1 } ).explain();
- checkExplain( e, true && indexed, false, 4 );
- f = r.find().sort( { a: 1, b: -1 } );
+ e = r.find().sort( { a: 1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: 1, b: -1 } ).hint( hint );
eq( z[ 1 ], f[ 0 ] );
eq( z[ 0 ], f[ 1 ] );
eq( z[ 3 ], f[ 2 ] );
eq( z[ 2 ], f[ 3 ] );
- e = r.find().sort( { a: -1, b: 1 } ).explain();
- checkExplain( e, true && indexed, true && indexed, 4 );
- f = r.find().sort( { a: -1, b: 1 } );
+ e = r.find().sort( { a: -1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, true && indexed, 4 );
+ f = r.find().sort( { a: -1, b: 1 } ).hint( hint );
eq( z[ 2 ], f[ 0 ] );
eq( z[ 3 ], f[ 1 ] );
eq( z[ 0 ], f[ 2 ] );
eq( z[ 1 ], f[ 3 ] );
- e = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).explain();
- checkExplain( e, true && indexed, false, indexed ? 2 : 4 );
- f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } );
+ e = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: -1 } ).hint( hint );
eq( z[ 3 ], f[ 0 ] );
eq( z[ 2 ], f[ 1 ] );
- e = r.find( { a : { $gte: 2 } } ).sort( { a: -1, b: 1 } ).explain();
- checkExplain( e, true && indexed, true && indexed, indexed ? 2 : 4 );
- f = r.find( { a: { $gte: 2 } } ).sort( { a: -1, b: 1 } );
+ e = r.find( { a : { $gte: 2 } } ).sort( { a: -1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, true && indexed, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: -1, b: 1 } ).hint( hint );
+ eq( z[ 2 ], f[ 0 ] );
+ eq( z[ 3 ], f[ 1 ] );
+
+ e = r.find( { a : { $gte: 2 } } ).sort( { a: 1, b: 1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, indexed ? 2 : 4 );
+ f = r.find( { a: { $gte: 2 } } ).sort( { a: 1, b: 1 } ).hint( hint );
eq( z[ 2 ], f[ 0 ] );
eq( z[ 3 ], f[ 1 ] );
- e = r.find().sort( { a: -1, b: -1 } ).explain();
- checkExplain( e, false, false, 4 );
- f = r.find().sort( { a: -1, b: -1 } );
+ e = r.find().sort( { a: -1, b: -1 } ).hint( hint ).explain();
+ checkExplain( e, indexed, false, 4 );
+ f = r.find().sort( { a: -1, b: -1 } ).hint( hint );
eq( z[ 3 ], f[ 0 ] );
eq( z[ 2 ], f[ 1 ] );
eq( z[ 1 ], f[ 2 ] );
@@ -79,10 +92,9 @@ z = [ { a: 1, b: 1 },
for( i = 0; i < z.length; ++i )
r.save( z[ i ] );
-check( false );
-
r.ensureIndex( { a: 1, b: -1 } );
+check( false );
check( true );
-assert.eq( "BasicCursor", r.find().sort( { a: 1, b: -1, z: 1 } ).explain().cursor );
+assert.eq( "BasicCursor", r.find().sort( { a: 1, b: -1, z: 1 } ).hint( { $natural: -1 } ).explain().cursor );
View
24 jstests/cursor7.js
@@ -22,21 +22,21 @@ function testMultipleInequalities( db ) {
rIdx = { a: -1, b: -1 };
r.ensureIndex( idx );
- checkResults( [ z[ 2 ], z[ 3 ] ], r.find( { a: { $gt: 3 } } ).sort( idx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7 } } ).sort( idx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gt: 3 } } ).sort( idx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7, $lte: 5 } } ).sort( idx ) );
+ checkResults( [ z[ 2 ], z[ 3 ] ], r.find( { a: { $gt: 3 } } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7 } } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gt: 3 } } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7, $lte: 5 } } ).sort( idx ).hint( idx ) );
- checkResults( [ z[ 3 ], z[ 2 ] ], r.find( { a: { $gt: 3 } } ).sort( rIdx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7 } } ).sort( rIdx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gt: 3 } } ).sort( rIdx ) );
- checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7, $lte: 5 } } ).sort( rIdx ) );
+ checkResults( [ z[ 3 ], z[ 2 ] ], r.find( { a: { $gt: 3 } } ).sort( rIdx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7 } } ).sort( rIdx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gt: 3 } } ).sort( rIdx ).hint( idx ) );
+ checkResults( [ z[ 2 ] ], r.find( { a: { $gt: 3, $lt: 7, $lte: 5 } } ).sort( rIdx ).hint( idx ) );
- checkResults( [ z[ 1 ], z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gte: 3, $lte: 5 }, b: { $gt: 2, $lt: 8, $gte: 4, $lte: 6 } } ).sort( idx ) );
- checkResults( [ z[ 2 ], z[ 1 ] ], r.find( { a: { $gt: 1, $lt: 7, $gte: 3, $lte: 5 }, b: { $gt: 2, $lt: 8, $gte: 4, $lte: 6 } } ).sort( rIdx ) );
+ checkResults( [ z[ 1 ], z[ 2 ] ], r.find( { a: { $gt: 1, $lt: 7, $gte: 3, $lte: 5 }, b: { $gt: 2, $lt: 8, $gte: 4, $lte: 6 } } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 2 ], z[ 1 ] ], r.find( { a: { $gt: 1, $lt: 7, $gte: 3, $lte: 5 }, b: { $gt: 2, $lt: 8, $gte: 4, $lte: 6 } } ).sort( rIdx ).hint( idx ) );
- checkResults( [ z[ 1 ], z[ 2 ] ], r.find( { a: { $gte: 1, $lte: 7, $gt: 2, $lt: 6 }, b: { $gte: 2, $lte: 8, $gt: 3, $lt: 7 } } ).sort( idx ) );
- checkResults( [ z[ 2 ], z[ 1 ] ], r.find( { a: { $gte: 1, $lte: 7, $gt: 2, $lt: 6 }, b: { $gte: 2, $lte: 8, $gt: 3, $lt: 7 } } ).sort( rIdx ) );
+ checkResults( [ z[ 1 ], z[ 2 ] ], r.find( { a: { $gte: 1, $lte: 7, $gt: 2, $lt: 6 }, b: { $gte: 2, $lte: 8, $gt: 3, $lt: 7 } } ).sort( idx ).hint( idx ) );
+ checkResults( [ z[ 2 ], z[ 1 ] ], r.find( { a: { $gte: 1, $lte: 7, $gt: 2, $lt: 6 }, b: { $gte: 2, $lte: 8, $gt: 3, $lt: 7 } } ).sort( rIdx ).hint( idx ) );
}
testMultipleInequalities( db );
View
87 jstests/index7.js
@@ -30,77 +30,38 @@ f.drop();
f.save( { a : 5 } )
f.ensureIndex( { a: 1 } );
-index( f.find().sort( { a: 1 } ) );
-index( f.find( { a: 5 } ) );
-index( f.find( { a: 5 } ).sort( { a: 1 } ) );
-index( f.find( { a: { $gt: 5 } } ) );
-index( f.find( { a: { $gt: 5 } } ).sort( { a: 1 } ) );
-index( f.find( { a: { $gt: 5, $lt: 1000 } } ) );
-index( f.find( { a: { $gt: 5, $lt: 1000 } } ).sort( { a: 1 } ) );
+index( f.find( { a: 5 } ).sort( { a: 1 } ).hint( { a: 1 } ) );
+noIndex( f.find( { a: 5 } ).sort( { a: 1 } ).hint( { $natural: 1 } ) );
f.drop();
f.ensureIndex( { a: 1, b: 1 } );
-index( f.find().sort( { a: 1, b: 1 } ) );
-index( f.find().sort( { a: -1, b: -1 } ) );
-index( f.find().sort( { a: 1 } ) );
-index( f.find().sort( { a: 1 } ).hint( { a: 1, b: 1 } ) );
-noIndex( f.find().sort( { a: 1, b: -1 } ) );
-noIndex( f.find().sort( { b: 1, a: 1 } ) );
+assert.eq( 1, f.find( { a: 1 } ).hint( { a: 1, b: 1 } ).explain().startKey.a );
+assert.eq( 1, f.find( { a: 1 } ).hint( { a: 1, b: 1 } ).explain().endKey.a );
+assert.eq( 1, f.find( { a: 1, c: 1 } ).hint( { a: 1, b: 1 } ).explain().startKey.a );
+assert.eq( 1, f.find( { a: 1, c: 1 } ).hint( { a: 1, b: 1 } ).explain().endKey.a );
+assert.eq( null, f.find( { a: 1, c: 1 } ).hint( { a: 1, b: 1 } ).explain().startKey.c );
+assert.eq( null, f.find( { a: 1, c: 1 } ).hint( { a: 1, b: 1 } ).explain().endKey.c );
-noIndex( f.find() );
-noIndex( f.find( { c: 1 } ) );
-index( f.find( { a: 1 } ) );
-assert.eq( 1, f.find( { a: 1 } ).explain().startKey.a );
-assert.eq( 1, f.find( { a: 1 } ).explain().endKey.a );
-index( f.find( { a: 1, c: 1 } ) );
-assert.eq( 1, f.find( { a: 1, c: 1 } ).explain().startKey.a );
-assert.eq( 1, f.find( { a: 1, c: 1 } ).explain().endKey.a );
-assert.eq( null, f.find( { a: 1, c: 1 } ).explain().startKey.c );
-assert.eq( null, f.find( { a: 1, c: 1 } ).explain().endKey.c );
-noIndex( f.find( { b: 1 } ) );
-index( f.find( { a: 1, b: 1 } ) );
-index( f.find( { b: 1, a: 1 } ) );
+start( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ).hint( { a: 1, b: 1 } ) );
+start( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+start( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
+start( { a: "a", b: 1 }, f.find( { b: 1, a: /^a/ } ).hint( { a: 1, b: 1 } ) );
+end( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ).hint( { a: 1, b: 1 } ) );
+end( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
+end( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: -1, b: -1 } ).hint( { a: 1, b: 1 } ) );
+end( { a: "b", b: 1 }, f.find( { b: 1, a: /^a/ } ).hint( { a: 1, b: 1 } ) );
-index( f.find( { a: /^a/, b: 1 } ) );
-index( f.find( { b: 1, a: /^a/ } ) );
-start( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ) );
-start( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: 1, b: 1 } ) );
-start( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: -1, b: -1 } ) );
-start( { a: "a", b: 1 }, f.find( { b: 1, a: /^a/ } ) );
-end( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ) );
-end( { a: "b", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: 1, b: 1 } ) );
-end( { a: "a", b: 1 }, f.find( { a: /^a/, b: 1 } ).sort( { a: -1, b: -1 } ) );
-end( { a: "b", b: 1 }, f.find( { b: 1, a: /^a/ } ) );
+start( { a: "z", b: 1 }, f.find( { a: /^z/, b: 1 } ).hint( { a: 1, b: 1 } ) );
+end( { a: "{", b: 1 }, f.find( { a: /^z/, b: 1 } ).hint( { a: 1, b: 1 } ) );
-start( { a: "z", b: 1 }, f.find( { a: /^z/, b: 1 } ) );
-end( { a: "{", b: 1 }, f.find( { a: /^z/, b: 1 } ) );
-noIndex( f.find( { a: /^\{/, b: 1 } ) );
+start( { a: "az", b: 1 }, f.find( { a: /^az/, b: 1 } ).hint( { a: 1, b: 1 } ) );
+end( { a: "a{", b: 1 }, f.find( { a: /^az/, b: 1 } ).hint( { a: 1, b: 1 } ) );
-start( { a: "az", b: 1 }, f.find( { a: /^az/, b: 1 } ) );
-end( { a: "a{", b: 1 }, f.find( { a: /^az/, b: 1 } ) );
+both( { a: 1, b: 3 }, f.find( { a: 1, b: 3 } ).hint( { a: 1, b: 1 } ) );
-noIndex( f.find( { a: /ab/, b: 1 } ) );
-noIndex( f.find( { a: /^ab/g, b: 1 } ) );
-noIndex( f.find( { a: /^ab-/, b: 1 } ) );
-noIndex( f.find( { b: 1, a: /ab/ } ) );
-index( f.find( { b: /ab/, a: 1 } ) );
-index( f.find( { a: 1, b: /ab/ } ) );
-
-noIndex( f.find( { a: { $in: [ 1, 2 ] }, b: 1 } ) );
-index( f.find( { a: 1, b: { $in: [ 1, 2 ] } } ) );
-
-noIndex( f.find( { a: /^/, b: 1 } ) );
-
-both( { a: 1, b: 3 }, f.find( { a: 1, b: 3 } ) );
-
-index( f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ) );
-both( { a: 1, b: 2 }, f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ) );
-index( f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ).sort( { a: 1, b: 1 } ) );
-both( { a: 1, b: 2 }, f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ).sort( { a: 1, b: 1 } ) );
-
-index( f.find( { a: { $gt: 1 }, b: { $lt: 2 } } ) );
-index( f.find( { a: { $gt: 1 }, b: { $lt: 2 } } ).sort( { a: 1, b: 1 } ) );
+both( { a: 1, b: 2 }, f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ).hint( { a: 1, b: 1 } ) );
+both( { a: 1, b: 2 }, f.find( { a: { $gt: 1, $lt: 1 }, b: 2 } ).sort( { a: 1, b: 1 } ).hint( { a: 1, b: 1 } ) );
f.drop();
f.ensureIndex( { b: 1, a: 1 } );
-both( { a: 1, b: 3 }, f.find( { a: 1, b: 3 } ) );
+both( { a: 1, b: 3 }, f.find( { a: 1, b: 3 } ).hint( { b: 1, a: 1 } ) );
Please sign in to comment.
Something went wrong with that request. Please try again.