summaryrefslogtreecommitdiff
path: root/jstests/core/arrayfinda.js
blob: f2939d0c1baf04051c9ed77adfaec54b2f54b07a (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}));