collect()¶
The collect() function returns a list containing the values returned by an expression. Using this function aggregates data by merging multiple records or values into a single list.
The aggregate function collect() works like GROUP BY in SQL.
Examples¶
```ngql nebula> UNWIND [1, 2, 1] AS a \ RETURN a; +---+ | a | +---+ | 1 | | 2 | | 1 | +---+
nebula> UNWIND [1, 2, 1] AS a \ RETURN collect(a); +------------+ | collect(a) | +------------+ | [1, 2, 1] | +------------+
nebula> UNWIND [1, 2, 1] AS a \ RETURN a, collect(a), size(collect(a)); +---+------------+------------------+ | a | collect(a) | size(COLLECT(a)) | +---+------------+------------------+ | 2 | [2] | 1 | | 1 | [1, 1] | 2 | +---+------------+------------------+
The following examples sort the results in descending order, limit output rows to 3, and collect the output into a list.Ϧ
nebula> UNWIND ["c", "b", "a", "d" ] AS p \ WITH p AS q \ ORDER BY q DESC LIMIT 3 \ RETURN collect(q); +-----------------+ | collect(q) | +-----------------+ | ["d", "c", "b"] | +-----------------+
nebula> WITH [1, 1, 2, 2] AS coll \ UNWIND coll AS x \ WITH DISTINCT x \ RETURN collect(x) AS ss; +--------+ | ss | +--------+ | [1, 2] | +--------+
nebula> MATCH (n:player) \ RETURN collect(n.player.age); +---------------------------------------------------------------+ | collect(n.player.age) | +---------------------------------------------------------------+ | [32, 32, 34, 29, 41, 40, 33, 25, 40, 37, ... ...
The following example aggregates all the players' names by their ages.¶
nebula> MATCH (n:player) \ RETURN n.player.age AS age, collect(n.player.name); +-----+--------------------------------------------------------------------------+ | age | collect(n.player.name) | +-----+--------------------------------------------------------------------------+ | 24 | ["Giannis Antetokounmpo"] | | 20 | ["Luka Doncic"] | | 25 | ["Joel Embiid", "Kyle Anderson"] | +-----+--------------------------------------------------------------------------+ ... ```