mingo
Version:
MongoDB query language for in-memory objects
26 lines (25 loc) • 711 B
JavaScript
import { evalExpr } from "../../../core/_internal";
import { assert, isArray, isNil, isNumber } from "../../../util";
import { errExpectArray, errInvalidArgs } from "../_internal";
const $divide = (obj, expr, options) => {
assert(isArray(expr), "$divide expects array(2)");
const args = evalExpr(obj, expr, options);
const foe = options.failOnError;
let t_num = true;
for (const v of args) {
if (isNil(v)) return null;
t_num &&= isNumber(v);
}
if (!t_num) {
return errExpectArray(foe, "$divide", {
size: 2,
type: "number"
});
}
if (args[1] === 0)
return errInvalidArgs(foe, "$divide cannot divide by zero");
return args[0] / args[1];
};
export {
$divide
};