mirror of https://github.com/mongodb/mongo
33 lines
997 B
JavaScript
33 lines
997 B
JavaScript
// Test "impossible match" queries, or queries that will always have
|
|
// an empty result set.
|
|
// @tags: [
|
|
// assumes_read_concern_local,
|
|
// ]
|
|
|
|
let t = db.jstests_indexn;
|
|
t.drop();
|
|
|
|
t.save({a: 1, b: [1, 2]});
|
|
|
|
t.createIndex({a: 1});
|
|
t.createIndex({b: 1});
|
|
|
|
// {a:1} is a single key index, so no matches are possible for this query
|
|
assert.eq(0, t.count({a: {$gt: 5, $lt: 0}}));
|
|
|
|
assert.eq(0, t.count({a: {$gt: 5, $lt: 0}, b: 2}));
|
|
|
|
assert.eq(0, t.count({a: {$gt: 5, $lt: 0}, b: {$gt: 0, $lt: 5}}));
|
|
|
|
// One clause of an $or is an "impossible match"
|
|
printjson(t.find({$or: [{a: {$gt: 5, $lt: 0}}, {a: 1}]}).explain());
|
|
assert.eq(1, t.count({$or: [{a: {$gt: 5, $lt: 0}}, {a: 1}]}));
|
|
|
|
// One clause of an $or is an "impossible match"; original order of the $or
|
|
// does not matter.
|
|
printjson(t.find({$or: [{a: 1}, {a: {$gt: 5, $lt: 0}}]}).explain());
|
|
assert.eq(1, t.count({$or: [{a: 1}, {a: {$gt: 5, $lt: 0}}]}));
|
|
|
|
t.save({a: 2});
|
|
assert.eq(2, t.count({$or: [{a: 1}, {a: {$gt: 5, $lt: 0}}, {a: 2}]}));
|