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¶
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.age);
+---------------------------------------------------------------+
| collect(n.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.age AS age, collect(n.name);
+-----+--------------------------------------------------------------------------+
| age | collect(n.name) |
+-----+--------------------------------------------------------------------------+
| 24 | ["Giannis Antetokounmpo"] |
| 20 | ["Luka Doncic"] |
| 25 | ["Joel Embiid", "Kyle Anderson"] |
+-----+--------------------------------------------------------------------------+
...
Last update: November 1, 2021