summaryrefslogtreecommitdiff
path: root/jstests/core/arrayfind2.js
blob: 60eaa27f0d700cfa7913182a35ee5f31f5186e03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

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

function go(prefix) {
    assert.eq(3, t.count(), prefix + " A1");
    assert.eq(3, t.find({a: {$elemMatch: {x: {$gt: 4}}}}).count(), prefix + " A2");
    assert.eq(1, t.find({a: {$elemMatch: {x: {$lt: 2}}}}).count(), prefix + " A3");
    assert.eq(
        1,
        t.find({a: {$all: [{$elemMatch: {x: {$lt: 4}}}, {$elemMatch: {x: {$gt: 5}}}]}}).count(),
        prefix + " A4");

    assert.throws(function() {
        return t.findOne({a: {$all: [1, {$elemMatch: {x: 3}}]}});
    });
    assert.throws(function() {
        return t.findOne({a: {$all: [/a/, {$elemMatch: {x: 3}}]}});
    });
}

t.save({a: [{x: 1}, {x: 5}]});
t.save({a: [{x: 3}, {x: 5}]});
t.save({a: [{x: 3}, {x: 6}]});

go("no index");
t.ensureIndex({a: 1});
go("index(a)");