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
|
// Test $nor match expression.
(function() {
"use strict";
load("jstests/aggregation/extras/utils.js");
const coll = db.jstests_core_nor;
coll.drop();
function assertIds(query, expectedIds) {
const resultIds = coll.find(query, {_id: 1}).map(d => d._id);
assertArrayEq({actual: expectedIds, expected: resultIds});
}
assert.commandWorked(coll.insert([
{_id: 1, a: 1},
{_id: 2, a: 2},
{_id: 3, a: 3},
]));
assertIds({$nor: [{a: 1}]}, [2, 3]);
assertIds({$nor: [{a: 1}, {a: 2}]}, [3]);
assertIds({$nor: [{a: 1}, {a: 2}, {a: 3}]}, []);
assert(coll.drop());
assert.commandWorked(coll.insert([
{_id: 1, a: 1, b: 2, c: 3},
{_id: 2, a: 1, b: 2, c: 5},
{_id: 3, a: 1, b: 5, c: 3},
{_id: 4, a: 1, b: 5, c: 5},
{_id: 5, a: 5, b: 2, c: 3},
{_id: 6, a: 5, b: 2, c: 5},
{_id: 7, a: 5, b: 5, c: 3},
{_id: 8, a: 5, b: 5, c: 5},
]));
assertIds({$nor: [{a: 1}, {b: 2}, {c: 3}]}, [8]);
}());
|