mirror of https://github.com/mongodb/mongo
96 lines
2.0 KiB
JavaScript
96 lines
2.0 KiB
JavaScript
// SERVER-1089 Test and/or nesting
|
|
|
|
t = db.jstests_andor;
|
|
t.drop();
|
|
|
|
// not ok
|
|
function ok(q) {
|
|
assert.eq(1, t.find(q).itcount());
|
|
}
|
|
|
|
t.save({a: 1});
|
|
|
|
test = function() {
|
|
ok({a: 1});
|
|
|
|
ok({$and: [{a: 1}]});
|
|
ok({$or: [{a: 1}]});
|
|
|
|
ok({$and: [{$and: [{a: 1}]}]});
|
|
ok({$or: [{$or: [{a: 1}]}]});
|
|
|
|
ok({$and: [{$or: [{a: 1}]}]});
|
|
ok({$or: [{$and: [{a: 1}]}]});
|
|
|
|
ok({$and: [{$and: [{$or: [{a: 1}]}]}]});
|
|
ok({$and: [{$or: [{$and: [{a: 1}]}]}]});
|
|
ok({$or: [{$and: [{$and: [{a: 1}]}]}]});
|
|
|
|
ok({$or: [{$and: [{$or: [{a: 1}]}]}]});
|
|
|
|
// now test $nor
|
|
|
|
ok({$and: [{a: 1}]});
|
|
ok({$nor: [{a: 2}]});
|
|
|
|
ok({$and: [{$and: [{a: 1}]}]});
|
|
ok({$nor: [{$nor: [{a: 1}]}]});
|
|
|
|
ok({$and: [{$nor: [{a: 2}]}]});
|
|
ok({$nor: [{$and: [{a: 2}]}]});
|
|
|
|
ok({$and: [{$and: [{$nor: [{a: 2}]}]}]});
|
|
ok({$and: [{$nor: [{$and: [{a: 2}]}]}]});
|
|
ok({$nor: [{$and: [{$and: [{a: 2}]}]}]});
|
|
|
|
ok({$nor: [{$and: [{$nor: [{a: 1}]}]}]});
|
|
};
|
|
|
|
test();
|
|
t.ensureIndex({a: 1});
|
|
test();
|
|
|
|
// Test an inequality base match.
|
|
|
|
test = function() {
|
|
ok({a: {$ne: 2}});
|
|
|
|
ok({$and: [{a: {$ne: 2}}]});
|
|
ok({$or: [{a: {$ne: 2}}]});
|
|
|
|
ok({$and: [{$and: [{a: {$ne: 2}}]}]});
|
|
ok({$or: [{$or: [{a: {$ne: 2}}]}]});
|
|
|
|
ok({$and: [{$or: [{a: {$ne: 2}}]}]});
|
|
ok({$or: [{$and: [{a: {$ne: 2}}]}]});
|
|
|
|
ok({$and: [{$and: [{$or: [{a: {$ne: 2}}]}]}]});
|
|
ok({$and: [{$or: [{$and: [{a: {$ne: 2}}]}]}]});
|
|
ok({$or: [{$and: [{$and: [{a: {$ne: 2}}]}]}]});
|
|
|
|
ok({$or: [{$and: [{$or: [{a: {$ne: 2}}]}]}]});
|
|
|
|
// now test $nor
|
|
|
|
ok({$and: [{a: {$ne: 2}}]});
|
|
ok({$nor: [{a: {$ne: 1}}]});
|
|
|
|
ok({$and: [{$and: [{a: {$ne: 2}}]}]});
|
|
ok({$nor: [{$nor: [{a: {$ne: 2}}]}]});
|
|
|
|
ok({$and: [{$nor: [{a: {$ne: 1}}]}]});
|
|
ok({$nor: [{$and: [{a: {$ne: 1}}]}]});
|
|
|
|
ok({$and: [{$and: [{$nor: [{a: {$ne: 1}}]}]}]});
|
|
ok({$and: [{$nor: [{$and: [{a: {$ne: 1}}]}]}]});
|
|
ok({$nor: [{$and: [{$and: [{a: {$ne: 1}}]}]}]});
|
|
|
|
ok({$nor: [{$and: [{$nor: [{a: {$ne: 2}}]}]}]});
|
|
};
|
|
|
|
t.drop();
|
|
t.save({a: 1});
|
|
test();
|
|
t.ensureIndex({a: 1});
|
|
test();
|