Oihana PHP Arango

aqlCollectReturn.php

Table of Contents

Functions

aqlCollectReturn()  : string
Builds the `RETURN` clause that follows an AQL `COLLECT` produced by {@see aqlCollect()}.

Functions

aqlCollectReturn()

Builds the `RETURN` clause that follows an AQL `COLLECT` produced by {@see aqlCollect()}.

aqlCollectReturn([array<string|int, mixed> $spec = [] ][, string|null $explicit = null ]) : string

After a COLLECT, the iteration variable (e.g. doc) is out of scope: only the grouping variables, the aggregate variables and the optional WITH COUNT variable remain usable. This helper derives a valid projection from the very same $spec given to aqlCollect(), so the two always stay in sync.

Behaviour

  • An explicit, non-empty $explicit expression always wins (RETURN <expr>).
  • Otherwise the projection is derived from the spec:
    • grouping keys (array_keys(AQL::ASSIGN)) + aggregate keys (array_keys(AQL::AGGREGATE)),
    • plus the AQL::WITH_COUNT variable when present.
  • AQL::AGGREGATE and AQL::WITH_COUNT are mutually exclusive (mirrors aqlCollect()): when an aggregate is present the count variable is ignored.
  • A pure count (no grouping, no aggregate, only WITH_COUNT) returns the scalar count (RETURN length), not an object.
  • When nothing can be projected, an empty string is returned.

AQL::INTO collected documents are intentionally NOT auto-projected (they may be huge); pass an $explicit projection to expose them.

Examples

echo aqlCollectReturn([ AQL::ASSIGN => ['status' => 'doc.status'] ]);
// RETURN { status }

echo aqlCollectReturn([ AQL::ASSIGN => ['category' => 'doc.category'], AQL::WITH_COUNT => 'count' ]);
// RETURN { category, count }

echo aqlCollectReturn([ AQL::WITH_COUNT => 'length' ]);
// RETURN length

echo aqlCollectReturn([ AQL::ASSIGN => ['y' => 'DATE_YEAR(doc.created)'] ], '{ year: y }');
// RETURN { year: y }
Parameters
$spec : array<string|int, mixed> = []

The same associative spec passed to aqlCollect().

$explicit : string|null = null

An explicit RETURN expression overriding the derivation.

Tags
throws
UnsupportedOperationException
since
1.0.0
author

Marc Alcaraz

Return values
string

The compiled AQL RETURN clause, or an empty string when nothing to project.

On this page

Search results