21 lines
749 B
JavaScript
21 lines
749 B
JavaScript
// 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 } ) );
|