列表函数
示例图
以下图用于下面的示例
要重新创建该图,请对空的 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:Adminstrator {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)
keys()
语法 |
|
||
描述 |
返回一个包含 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回所有属性名称的节点或关系。 |
|
返回值 |
|
|
MATCH (a) WHERE a.name = 'Alice'
RETURN keys(a)
返回一个包含绑定到a
的节点上所有属性名称的LIST<STRING>
。
keys(a) |
---|
|
行:1 |
labels()
语法 |
|
||
描述 |
返回一个包含 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其标签的节点。 |
|
返回值 |
|
|
使用 |
MATCH (a) WHERE a.name = 'Alice'
RETURN labels(a)
返回一个包含绑定到a
的节点的所有标签的LIST<STRING>
。
labels(a) |
---|
|
行:1 |
nodes()
语法 |
|
||
描述 |
返回一个包含 |
||
参数 |
名称 |
类型 |
描述 |
|
|
将返回其节点的路径。 |
|
返回值 |
|
|
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN nodes(p)
返回一个包含路径p
中所有节点的LIST<NODE>
。
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()
语法 |
|
||
描述 |
对 |
||
参数 |
名称 |
类型 |
描述 |
|
|
在迭代列表时保存结果的变量。 |
|
|
|
可以在缩减表达式中使用的变量。 |
|
返回值 |
|
此函数类似于 Lisp 和 Scala 等函数式语言中的fold
或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)
返回一个包含PATH
p
中所有RELATIONSHIP
值的LIST<RELATIONSHIP>
。
relationships(p) |
---|
|
行:1 |
reverse()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要反转的字符串或列表。 |
|
返回值 |
|
|
另请参阅字符串函数 → 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
的属性和一个包含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()
语法 |
|
||
描述 |
将 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为浮点数列表的值列表。 |
|
返回值 |
|
|
|
如果 |
如果 |
|
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()
语法 |
|
||
描述 |
将 |
||
参数 |
名称 |
类型 |
描述 |
|
|
要转换为整数列表的值列表。 |
|
返回值 |
|
|
|
如果 |
如果 |
|
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 |