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
|
// Tests the behavior of $mod for match expressions.
// @tags: [
// assumes_balancer_off,
// # Uses $where operator
// requires_scripting,
// assumes_read_concern_local,
// ]
(function() {
"use strict";
const coll = db.mod_with_where;
coll.drop();
assert.commandWorked(coll.insert([{a: 1}, {a: 2}, {a: 11}, {a: 20}, {a: "asd"}, {a: "adasdas"}]));
// Check basic mod usage.
assert.eq(2, coll.find("this.a % 10 == 1").itcount(), "A1");
assert.eq(2, coll.find({a: {$mod: [10, 1]}}).itcount(), "A2");
assert.eq(
0,
coll.find({a: {$mod: [10, 1]}}).explain("executionStats").executionStats.totalKeysExamined,
"A3");
assert.commandWorked(coll.createIndex({a: 1}));
// Check mod with an index.
assert.eq(2, coll.find("this.a % 10 == 1").itcount(), "B1");
assert.eq(2, coll.find({a: {$mod: [10, 1]}}).itcount(), "B2");
assert.eq(1, coll.find("this.a % 10 == 0").itcount(), "B3");
assert.eq(1, coll.find({a: {$mod: [10, 0]}}).itcount(), "B4");
assert.eq(
4,
coll.find({a: {$mod: [10, 1]}}).explain("executionStats").executionStats.totalKeysExamined,
"B5");
assert.eq(1, coll.find({a: {$gt: 5, $mod: [10, 1]}}).itcount());
assert(coll.drop());
}());
|