op:offset-limit( $plan as map:map, $start as item(), $length as item() ) as map:map
This method returns a subset of the rows in the result set by skipping the number of
rows specified by start
and returning the remaining rows up to the
length
limit.
A common pattern is to page over a result set by using a op:param placeholder parameter for the start and specifying the starting value in bindings for op:result. This approach reuses the cached query instead of recalculating the query on each request.
xquery version "1.0-ml"; import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; let $employees := op:from-view("main", "employees") let $expenses := op:from-view("main", "expenses") let $totalexpenses := op:col("totalexpenses") return $employees => op:join-inner($expenses, op:on( op:view-col("employees", "EmployeeID"), op:view-col("expenses", "EmployeeID"))) => op:group-by(op:view-col("employees", "EmployeeID"), ("FirstName", "LastName", op:view-col("expenses", "Category"), op:sum($totalexpenses, op:view-col("expenses", "Amount")))) => op:order-by(op:view-col("employees", "EmployeeID")) => op:offset-limit(2, 2) => op:result()