blob: fb1ee98a448d86cbaa1e3f3797dabef9824ac819 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
// 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();
|