mingo
Version:
MongoDB query language for in-memory objects
20 lines (19 loc) • 664 B
JavaScript
import { computeValue } from "../../../core/_internal";
import { Lazy } from "../../../lazy";
import { assert, compare, isArray, isNil, isObject } from "../../../util";
import { $sort } from "../../pipeline/sort";
const $sortArray = (obj, expr, options) => {
const { input, sortBy } = computeValue(obj, expr, null, options);
if (isNil(input)) return null;
assert(isArray(input), "$sortArray expression must resolve to an array");
if (isObject(sortBy)) {
return $sort(Lazy(input), sortBy, options).collect();
}
const result = input.slice();
result.sort(compare);
if (sortBy === -1) result.reverse();
return result;
};
export {
$sortArray
};