summaryrefslogtreecommitdiff
path: root/jstests/core/arrayfinda.js
blob: 163af3d8d29eaba2ae4b6d2be2e45d84a9f7fa53 (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.createIndex({a: 1});
assertExpectedMatch(t.find({a: {$elemMatch: {b: {$gte: 1}}}}).hint({a: 1}));
assertExpectedMatch(t.find({a: {$elemMatch: {b: 1}}}).hint({a: 1}));