summaryrefslogtreecommitdiff
path: root/jstests/aggregation/bugs/server62242.js
blob: 273dddbf16da5f593dd4fbc30a5f6d792d8fe889 (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
// SERVER-62242
// $indexOfArray does not work with duplicate values in array
(function() {
"use strict";

const c = db[jsTest.name()];
c.drop();

c.save({_id: 0, number: 222});

// before SERVER-62242, this incorrectly returned {_id: 0, number: 222, idx: -1}
assert.eq(
    [{_id: 0, number: 222, idx: 2}],
    c.aggregate([{$addFields: {idx: {$indexOfArray: [[111, 111, 222], "$number"]}}}]).toArray());

// this query was OK
assert.eq([{_id: 0, number: 222, idx: 2}],
          c.aggregate([
               {$addFields: {idx: {$indexOfArray: [[111, 111, 222, 333], "$number"]}}}
           ]).toArray());

// also test for cases where a range is specified
assert.eq([{_id: 0, number: 222, idx: -1}],
          c.aggregate([
               {$addFields: {idx: {$indexOfArray: [[111, 111, 222, 333], "$number", 0, 1]}}}
           ]).toArray());

assert.eq([{_id: 0, number: 222, idx: 3}],
          c.aggregate([
               {$addFields: {idx: {$indexOfArray: [[111, 111, 222, 222, 333], "$number", 3, 5]}}}
           ]).toArray());
})();