summaryrefslogtreecommitdiff
path: root/jstests/core/or_always_false.js
blob: 6760ee377756476c9a2cc86231a17bf7d1a4d722 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 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);
}());