summaryrefslogtreecommitdiff
path: root/jstests/core/nor.js
blob: 59f647aa7fd8587d7a4162cfb6dd15ded4b6aa6a (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
// 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]);
}());