列表函数
示例图
以下图表用于下方的示例
要重新创建该图,请在空的 Neo4j 数据库中运行以下查询
CREATE
(alice:Developer {name:'Alice', age: 38, eyes: 'Brown'}),
(bob:Administrator {name: 'Bob', age: 25, eyes: 'Blue'}),
(charlie:Administrator {name: 'Charlie', age: 53, eyes: 'Green'}),
(daniel:Administrator {name: 'Daniel', age: 54, eyes: 'Brown'}),
(eskil:Designer {name: 'Eskil', age: 41, eyes: 'blue', likedColors: ['Pink', 'Yellow', 'Black']}),
(alice)-[:KNOWS]->(bob),
(alice)-[:KNOWS]->(charlie),
(bob)-[:KNOWS]->(daniel),
(charlie)-[:KNOWS]->(daniel),
(bob)-[:MARRIED]->(eskil)
coll.distinct()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回删除所有重复值后的给定列表。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
需要去重的列表。 |
|
返回 |
|
||
|
保留不同值首次出现的顺序。 |
RETURN coll.distinct([1, 3, 2, 4, 2, 3, 1])
返回一个仅包含唯一值的 LIST<ANY>。
| coll.distinct([1, 3, 2, 4, 2, 3, 1]) |
|---|
|
行:1 |
RETURN coll.distinct([1, true, true, null, 'a', false, true, 1, null])
返回一个仅包含唯一值的 LIST<ANY>。
| coll.distinct([1, true, true, null, 'a', false, true, 1, null]) |
|---|
|
行:1 |
coll.flatten()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回展平至给定嵌套深度的列表。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
需要展平的嵌套列表。 |
|
|
|
展平的最大深度(默认值:1)。 |
|
返回 |
|
||
保留非列表项的原始顺序。 |
如果 |
|
|
|
|
|
RETURN coll.flatten(['a', ['b', ['c']]], 2)
返回一个 LIST<ANY>,其中嵌套深度在 2 以内的内部列表被展平。
| coll.flatten(['a', ['b', ['c']]], 2) |
|---|
|
行:1 |
RETURN coll.flatten(['a', ['b', ['c']]])
返回一个 LIST<ANY>,其中嵌套深度在 1(默认深度)以内的内部列表被展平。
| coll.flatten(['a', ['b', ['c']]]) |
|---|
|
行:1 |
coll.indexOf()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回给定列表中第一个匹配值的索引;如果不存在该值,则返回 -1。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要搜索的列表。 |
|
|
|
要搜索的值。 |
|
返回 |
|
||
索引从 0 开始。 |
如果列表中不存在该值,则返回 -1。 |
|
|
|
RETURN coll.indexOf(['a', 'b', 'c', 'c'], 'c')
表示列表中项目索引的 INTEGER。
| coll.indexOf(['a', 'b', 'c', 'c'], 'c') |
|---|
|
行:1 |
RETURN coll.indexOf([1, 'b', false], 4.3)
表示未找到值的 INTEGER -1。
| coll.indexOf([1, 'b', false], 4.3) |
|---|
|
行:1 |
coll.insert()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回一个在给定索引处插入了给定值的列表。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要添加到的列表。 |
|
|
|
要添加给定值的索引。 |
|
|
|
要添加到列表中的值。 |
|
返回 |
|
||
索引从 0 开始。 |
|
|
|
如果给定的 |
RETURN coll.insert([true, 'a', 1, 5.4], 1, false)
原始列表在给定索引处插入了新值,并将随后的所有值向后移动 1 位。
| coll.insert([true, 'a', 1, 5.4], 1, false) |
|---|
|
行:1 |
coll.max()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回给定列表中存在的最大值。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要搜索的列表。 |
|
返回 |
|
||
|
|
使用 Cypher® 的标准值排序确定最大值;请参阅 值类型的相等性、排序和比较。 |
RETURN coll.max([true, 'a', 1, 5.4])
基于 Cypher 排序在给定列表中找到的最大值。
| coll.max([true, 'a', 1, 5.4]) |
|---|
|
行:1 |
coll.min()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回给定列表中存在的最小值。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要搜索的列表。 |
|
返回 |
|
||
|
|
使用 Cypher 的标准值排序确定最小值;请参阅 值类型的相等性、排序和比较。 |
RETURN coll.min([true, 'a', 1, 5.4])
基于 Cypher 排序在给定列表中找到的最小值。
| coll.min([true, 'a', 1, 5.4]) |
|---|
|
行:1 |
coll.remove()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回一个删除了给定索引处值的列表。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要从中删除值的列表。 |
|
|
|
要删除的值的索引。 |
|
返回 |
|
||
索引从 0 开始。 |
|
|
|
如果给定的 |
RETURN coll.remove([true, 'a', 1, 5.4], 1)
原始列表删除了给定索引处的值,并将随后的所有值向前移动 1 位。
| coll.remove([true, 'a', 1, 5.4], 1) |
|---|
|
行:1 |
coll.sort()仅 Cypher 25Neo4j 2025.11 引入
语法 |
|
||
描述 |
返回排序后的列表。 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要排序的列表。 |
|
返回 |
|
||
排序遵循 Cypher 的标准值排序;请参阅 值类型的相等性、排序和比较。 |
|
RETURN coll.sort([true, 'a', 1, 2])
使用 Cypher 的排序规则按升序排列的列表。
| coll.sort([true, 'a', 1, 2]) |
|---|
|
行:1 |
keys()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其所有属性名称的节点或关系。 |
|
返回 |
|
||
|
MATCH (a) WHERE a.name = 'Alice'
RETURN keys(a)
返回一个 LIST<STRING>,包含绑定到 a 的节点上的所有属性名称。
| keys(a) |
|---|
|
行:1 |
labels()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其标签的节点。 |
|
返回 |
|
||
|
使用 |
MATCH (a) WHERE a.name = 'Alice'
RETURN labels(a)
返回一个 LIST<STRING>,包含绑定到 a 的节点的所有标签。
| labels(a) |
|---|
|
行:1 |
nodes()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其节点的路径。 |
|
返回 |
|
||
返回的 |
|
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN nodes(p)
返回一个 LIST<NODE>,包含路径 p 中的所有节点。
| nodes(p) |
|---|
|
行:1 |
range()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
范围的起始值。 |
|
|
|
范围的结束值。 |
|
|
|
增量大小(默认值:1)。 |
|
返回 |
|
||
要创建具有递减 |
对于非空范围,该范围是包含边界的,因此算术级数将始终包含 |
如果 |
RETURN range(0, 10), range(2, 18, 3), range(0, 5, -1)
返回给定范围内的三个数字列表。
| range(0, 10) | range(2, 18, 3) | range(0, 5, -1) |
|---|---|---|
|
|
|
行:1 |
||
reduce()
语法 |
|
||
描述 |
对 |
||
参数 |
名称 |
类型 |
描述 |
|
|
在遍历 |
|
|
|
|
|
|
|
在遍历期间表示 |
|
|
|
正在遍历的 |
|
|
|
在每次迭代时更新 |
|
返回 |
|
||
|
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND b.name = 'Bob' AND c.name = 'Daniel'
RETURN reduce(totalAge = 0, n IN nodes(p) | totalAge + n.age) AS reduction
将 PATH 中所有 NODE 值的 age 属性求和并作为单个值返回。
| reduction |
|---|
|
行:1 |
relationships()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其所有关系的路径。 |
|
返回 |
|
||
|
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN relationships(p)
返回一个 LIST<RELATIONSHIP>,包含 PATH p 中的所有 RELATIONSHIP 值。
| relationships(p) |
|---|
|
行:1 |
reverse()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要反转的字符串或列表。 |
|
返回 |
|
||
|
另请参阅 字符串函数 → |
WITH [4923,'abc',521, null, 487] AS ids
RETURN reverse(ids)
| reverse(ids) |
|---|
|
行:1 |
tail()
语法 |
|
||
描述 |
返回 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回除第一个元素外所有元素的列表。 |
|
返回 |
|
||
MATCH (a) WHERE a.name = 'Eskil'
RETURN a.likedColors, tail(a.likedColors)
返回名为 likedColors 的属性,以及包含除该属性第一个元素外所有元素的 LIST<ANY>。
| a.likedColors | tail(a.likedColors) |
|---|---|
|
|
行:1 |
|
toBooleanList()
语法 |
|
||
描述 |
将值组成的 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为布尔值列表的值列表。 |
|
返回 |
|
||
|
|
如果 |
如果 |
|
RETURN toBooleanList(null) as noList,
toBooleanList([null, null]) as nullsInList,
toBooleanList(['a string', true, 'false', null, ['A','B']]) as mixedList
| noList | nullsInList | mixedList |
|---|---|---|
|
|
|
行:1 |
||
toFloatList()
语法 |
|
||
描述 |
将 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为浮点数列表的值列表或向量值。 |
|
返回 |
|
||
|
|
如果 |
如果 |
从 Neo4j 2025.10 起, |
|
RETURN toFloatList(null) as noList,
toFloatList([null, null]) as nullsInList,
toFloatList(['a string', 2.5, '3.14159', null, ['A','B']]) as mixedList
| noList | nullsInList | mixedList |
|---|---|---|
|
|
|
行:1 |
||
toIntegerList()
语法 |
|
||
描述 |
将 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为整数列表的值列表或向量值。 |
|
返回 |
|
||
|
|
如果 |
如果 |
从 Neo4j 2025.10 起, |
|
RETURN toIntegerList(null) as noList,
toIntegerList([null, null]) as nullsInList,
toIntegerList(['a string', 2, '5', null, ['A','B']]) as mixedList
| noList | nullsInList | mixedList |
|---|---|---|
|
|
|
行:1 |
||
toStringList()
语法 |
|
||
描述 |
将 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为字符串列表的值列表。 |
|
返回 |
|
||
|
|
如果 |
如果 |
|
RETURN toStringList(null) as noList,
toStringList([null, null]) as nullsInList,
toStringList(['already a string', 2, date({year:1955, month:11, day:5}), null, ['A','B']]) as mixedList
| noList | nullsInList | mixedList |
|---|---|---|
|
|
|
行:1 |
||