summaryrefslogtreecommitdiff
path: root/jstests/arrayfinda.js
blob: 179d398558089ce52735f8e10e9c2f4ac9788565 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Assorted $elemMatch matching behavior checks.

t = db.jstests_arrayfinda;
t.drop();

// $elemMatch only matches elements within arrays (a descriptive, not a normative test).
t.save( { a:[ { b:1 } ] } );
t.save( { a:{ b:1 } } );

function assertExpectedMatch( cursor ) {
    assert.eq( [ { b:1 } ], cursor.next().a );
    assert( !cursor.hasNext() );
}

assertExpectedMatch( t.find( { a:{ $elemMatch:{ b:{ $gte:1 } } } } ) );
assertExpectedMatch( t.find( { a:{ $elemMatch:{ b:1 } } } ) );

// $elemMatch is not used to perform key matching.  SERVER-6001
t.ensureIndex( { a:1 } );
assertExpectedMatch( t.find( { a:{ $elemMatch:{ b:{ $gte:1 } } } } ).hint( { a:1 } ) );
assertExpectedMatch( t.find( { a:{ $elemMatch:{ b:1 } } } ).hint( { a:1 } ) );