mingo
Version:
MongoDB query language for in-memory objects
21 lines (20 loc) • 702 B
JavaScript
import { ComputeOptions, computeValue } from "../../../core/_internal";
import { assert, isArray, isNil, truthy } from "../../../util/_internal";
const $filter = (obj, expr, options) => {
const input = computeValue(obj, expr.input, null, options);
if (isNil(input)) return null;
assert(isArray(input), "$filter 'input' expression must resolve to an array");
const copts = ComputeOptions.init(options);
const k = expr.as || "this";
const locals = {
variables: { [k]: null }
};
return input.filter((o) => {
locals.variables[k] = o;
const b = computeValue(obj, expr.cond, null, copts.update(locals));
return truthy(b, options.useStrictMode);
});
};
export {
$filter
};