Since the format for passing these options is different for the find command, these options should be specified using the DBQuery helpers.
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
|
|
t = db.index_diag
|
|
t.drop();
|
|
|
|
t.ensureIndex( { x : 1 } );
|
|
|
|
all = []
|
|
ids = []
|
|
xs = []
|
|
|
|
function r( a ){
|
|
var n = []
|
|
for ( var x=a.length-1; x>=0; x-- )
|
|
n.push( a[x] );
|
|
return n;
|
|
}
|
|
|
|
for ( i=1; i<4; i++ ){
|
|
o = { _id : i , x : -i }
|
|
t.insert( o );
|
|
all.push( o );
|
|
ids.push( { _id : i } );
|
|
xs.push( { x : -i } );
|
|
}
|
|
|
|
assert.eq( all , t.find().sort( { _id : 1 } ).toArray() , "A1" );
|
|
assert.eq( r( all ) , t.find().sort( { _id : -1 } ).toArray() , "A2" );
|
|
|
|
assert.eq( all , t.find().sort( { x : -1 } ).toArray() , "A3" );
|
|
assert.eq( r( all ) , t.find().sort( { x : 1 } ).toArray() , "A4" );
|
|
|
|
assert.eq( ids , t.find().sort( { _id : 1 } ).returnKey().toArray() , "B1" )
|
|
assert.eq( r( ids ) , t.find().sort( { _id : -1 } ).returnKey().toArray() , "B2" )
|
|
assert.eq( xs , t.find().sort( { x : -1 } ).returnKey().toArray() , "B3" )
|
|
assert.eq( r( xs ) , t.find().sort( { x : 1 } ).returnKey().toArray() , "B4" )
|
|
|
|
assert.eq( r( xs ) , t.find().hint( { x : 1 } ).returnKey().toArray() , "B4" )
|
|
|
|
// SERVER-4981
|
|
t.ensureIndex( { _id : 1 , x : 1 } );
|
|
assert.eq( all , t.find().hint( { _id : 1 , x : 1 } ).returnKey().toArray() )
|
|
assert.eq( r( all ) , t.find().hint( { _id : 1 , x : 1 } ).sort( { x : 1 } ).returnKey().toArray() )
|
|
|
|
assert.eq( [ {} , {} , {} ], t.find().hint( { $natural : 1 } ).returnKey().toArray() )
|