collect 函数¶
collect()函数返回一个符合表达式返回结果的列表。该函数可以将多条记录或值合并进一个列表,实现数据聚合。
collect()是一个聚合函数,类似 SQL 中的GROUP BY。
示例¶
```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 | +---+------------+------------------+
降序排列,限制输出行数为 3,然后将结果输出到列表中。¶
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, ... ...
基于年龄聚合姓名。¶
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"] | +-----+--------------------------------------------------------------------------+ ... ```