summaryrefslogtreecommitdiff
path: root/jstests/core/or_always_false.js
blob: eb479486eac79a212dde4509a65cb03b703f011e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Tests that a rooted-$or query with each clause provably false will not return any results.
(function() {
    "use strict";

    const coll = db.or_always_false;
    coll.drop();

    assert.writeOK(coll.insert([{}, {}, {}]));
    const emptyOrError = assert.throws(() => coll.find({$or: []}).itcount());
    assert.eq(emptyOrError.code, ErrorCodes.BadValue);

    assert.eq(coll.find({$or: [{$alwaysFalse: 1}]}).itcount(), 0);
    assert.eq(coll.find({$or: [{a: {$all: []}}]}).itcount(), 0);
    assert.eq(coll.find({$or: [{$alwaysFalse: 1}, {$alwaysFalse: 1}]}).itcount(), 0);
    assert.eq(coll.find({$or: [{$alwaysFalse: 1}, {a: {$all: []}}, {$alwaysFalse: 1}]}).itcount(),
              0);
}());