Files
mongo/jstests/core/query/always_true_false.js
Zac 591928c619 SERVER-108478 JS formatted by prettier and remove clang-format (#39656)
GitOrigin-RevId: 6c8f6aded47f260aa4f7c231b17dae3302cb1e04
2025-08-21 17:27:09 +00:00

56 lines
2.5 KiB
JavaScript

// Tests $alwaysTrue and $alwaysFalse behavior for match expressions.
// @tags: [
// requires_getmore,
// ]
const coll = db.always_true_false;
coll.drop();
assert.commandWorked(coll.insert([{a: []}, {a: false}, {a: null}, {}, {a: false, b: 2}, {a: false, b: 1}]));
// Check alwaysFalse.
assert.eq(0, coll.find({$alwaysFalse: 1}).itcount());
assert.eq(0, coll.find({$alwaysFalse: 1, a: false}).itcount());
assert.eq(0, coll.find({$alwaysFalse: 1, b: 1}).itcount());
// Check alwaysFalse with $and, $or.
assert.eq(1, coll.find({$or: [{b: 1}, {$alwaysFalse: 1}]}).itcount());
assert.eq(0, coll.find({$or: [{$alwaysFalse: 1}]}).itcount());
assert.eq(0, coll.find({$or: [{$alwaysFalse: 1}, {$alwaysFalse: 1}]}).itcount());
assert.eq(0, coll.find({$or: [{$alwaysFalse: 1}, {a: {$all: []}}, {$alwaysFalse: 1}]}).itcount());
assert.eq(0, coll.find({$and: [{b: 1}, {$alwaysFalse: 1}]}).itcount());
assert.eq(0, coll.find({$and: [{a: false}, {$alwaysFalse: 1}, {$alwaysFalse: 1}]}).itcount());
// Check alwaysTrue.
assert.eq(6, coll.find({$alwaysTrue: 1}).itcount());
assert.eq(3, coll.find({$alwaysTrue: 1, a: false}).itcount());
assert.eq(1, coll.find({$alwaysTrue: 1, b: 1}).itcount());
// Check alwaysTrue with $and, $or.
assert.eq(3, coll.find({$and: [{a: false}, {$alwaysTrue: 1}, {$alwaysTrue: 1}]}).itcount());
assert.eq(0, coll.find({$and: [{a: false}, {$alwaysTrue: 1}, {$alwaysFalse: 1}]}).itcount());
assert.eq(6, coll.find({$or: [{b: 1}, {$alwaysTrue: 1}]}).itcount());
assert.eq(6, coll.find({$or: [{b: 1}, {$alwaysFalse: 1}, {$alwaysTrue: 1}]}).itcount());
assert(coll.drop());
// Check that a rooted-$or query with each clause false will not return any results.
assert.commandWorked(coll.insert([{}, {}, {}]));
assert.throwsWithCode(() => coll.find({$or: []}).itcount(), 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);
// Check failure cases.
assert.commandFailedWithCode(db.runCommand({find: coll.getName(), filter: {$alwaysTrue: 0}}), ErrorCodes.FailedToParse);
assert.commandFailedWithCode(
db.runCommand({find: coll.getName(), filter: {$alwaysFalse: 0}}),
ErrorCodes.FailedToParse,
);
assert.commandFailedWithCode(
db.runCommand({find: coll.getName(), filter: {a: {$alwaysFalse: 1}}}),
ErrorCodes.BadValue,
);