mirror of https://github.com/mongodb/mongo
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
/*
|
|
* Additional tests for $avg and $sum when used as expressions.
|
|
*/
|
|
|
|
let coll = db.collection;
|
|
assert(coll.drop());
|
|
|
|
/*
|
|
* Compares the expected result with the result of $avg in the agg pipeline.
|
|
*/
|
|
function assertResultAvg(expected, field) {
|
|
assert.eq(expected, coll.aggregate({$project: {a: {$avg: field}}}).toArray()[0].a);
|
|
}
|
|
|
|
/*
|
|
* Compares the expected result with the result of $sum in the agg pipeline.
|
|
*/
|
|
function assertResultSum(expected, field) {
|
|
assert.eq(expected, coll.aggregate({$project: {a: {$sum: field}}}).toArray()[0].a);
|
|
}
|
|
|
|
coll.insertOne({
|
|
"null": null,
|
|
"undefined": undefined,
|
|
"string": "hello world",
|
|
"num": -1,
|
|
"num2": 13.4,
|
|
"arrayEmpty": [],
|
|
"array1": [1, 2, 3],
|
|
"array2": [1, 2, 3, "string"],
|
|
"array3": [12.4, 5.6, 9.805],
|
|
"arrayNested1": [[1, 2, 3], new Map()],
|
|
"arrayNested2": [[1, 2, 3], 4, null],
|
|
});
|
|
|
|
// Single non-array input.
|
|
assertResultAvg(null, "$null");
|
|
assertResultAvg(null, "$undefined");
|
|
assertResultAvg(null, "$doesNotExist");
|
|
assertResultAvg(null, "$string");
|
|
assertResultAvg(-1, "$num");
|
|
assertResultAvg(13.4, "$num2");
|
|
|
|
assertResultSum(0, "$null");
|
|
assertResultSum(0, "$undefined");
|
|
assertResultSum(0, "$doesNotExist");
|
|
assertResultSum(0, "$string");
|
|
assertResultSum(-1, "$num");
|
|
assertResultSum(13.4, "$num2");
|
|
|
|
// Single array or multiple inputs.
|
|
assertResultAvg(null, "$arrEmpty");
|
|
assertResultAvg(2, "$array1");
|
|
assertResultAvg(2, "$array2");
|
|
assertResultAvg(9.268333333333333, "$array3");
|
|
assertResultAvg(null, "$arrayNested1");
|
|
assertResultAvg(4, "$arrayNested2");
|
|
|
|
assertResultSum(0, "$arrEmpty");
|
|
assertResultSum(6, "$array1");
|
|
assertResultSum(6, "$array2");
|
|
assertResultSum(27.805, "$array3");
|
|
assertResultAvg(null, "$arrayNested1");
|
|
assertResultSum(4, "$arrayNested2");
|
|
|
|
assert(coll.drop());
|