列表函数

列表函数返回不同数据实体的列表。

有关列表的更多详细信息和示例,请参阅列表列表运算符

示例图

以下图用于下面的示例

graph list functions

要重新创建该图,请对空的 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()

详情

语法

keys(input)

描述

返回一个包含NODERELATIONSHIPMAP的所有属性名称的STRING表示形式的LIST<STRING>

参数

名称

类型

描述

input

NODE | RELATIONSHIP | MAP

将返回所有属性名称的节点或关系。

返回值

LIST<STRING>

注意事项

keys(null) 返回null

示例 1. keys()
查询
MATCH (a) WHERE a.name = 'Alice'
RETURN keys(a)

返回一个包含绑定到a的节点上所有属性名称的LIST<STRING>

结果
keys(a)

["eyes", "name", "age"]

行:1

labels()

详情

语法

labels(input)

描述

返回一个包含NODE所有标签的STRING表示形式的LIST<STRING>

参数

名称

类型

描述

input

NODE

将返回其标签的节点。

返回值

LIST<STRING>

注意事项

labels(null) 返回null

使用labels()函数时,返回的标签顺序不保证。

示例 2. labels()
查询
MATCH (a) WHERE a.name = 'Alice'
RETURN labels(a)

返回一个包含绑定到a的节点的所有标签的LIST<STRING>

结果
labels(a)

["Developer"]

行:1

nodes()

详情

语法

nodes(input)

描述

返回一个包含PATH中所有NODE值的LIST<NODE>

参数

名称

类型

描述

input

PATH

将返回其节点的路径。

返回值

LIST<NODE>

注意事项

nodes(null) 返回null

示例 3. nodes()
查询
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN nodes(p)

返回一个包含路径p中所有节点的LIST<NODE>

结果
nodes(p)

[(:Developer {name: "Alice", eyes: "Brown", age: 38}), (:Administrator {name: "Bob", eyes: "Blue", age: 25}), (:Designer {name: "Eskil", likedColors: ["Pink", "Yellow", "Black"], eyes: "blue", age: 41})]

行:1

range()

详情

语法

range(start, end [, step])

描述

返回一个包含指定范围内所有INTEGER值的LIST<INTEGER>,使用步长创建,可以选择指定步长。

参数

名称

类型

描述

start

INTEGER

范围的起始值。

end

INTEGER

范围的结束值。

step

INTEGER

增量的尺寸(默认值:1)。

返回值

LIST<INTEGER>

注意事项

要创建具有递减INTEGER值的范围,请使用负值step

对于非空范围,范围包含起始值,并且算术级数将始终包含start和(取决于startstepend的值)end。唯一例外是空范围不包含start

如果step的值为负且start - end为正,反之亦然,则将返回空范围,例如range(0, 5, -1)

示例 4. range()
查询
RETURN range(0, 10), range(2, 18, 3), range(0, 5, -1)

返回给定范围内三个数字列表。

结果
range(0, 10) range(2, 18, 3) range(0, 5, -1)

[0,1,2,3,4,5,6,7,8,9,10]

[2,5,8,11,14,17]

[]

行:1

reduce()

详情

语法

reduce(accumulator, variable)

描述

LIST<ANY>的各个元素运行表达式,将表达式的结果存储在累加器中。

参数

名称

类型

描述

accumulator

ANY

在迭代列表时保存结果的变量。

variable

LIST<ANY>

可以在缩减表达式中使用的变量。

返回值

ANY

此函数类似于 Lisp 和 Scala 等函数式语言中的foldreduce方法。

示例 5. 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

117

行:1

relationships()

详情

语法

relationships(input)

描述

返回一个包含PATH中所有RELATIONSHIP值的LIST<RELATIONSHIP>

参数

名称

类型

描述

input

PATH

将返回所有关系的路径。

返回值

LIST<RELATIONSHIP>

注意事项

relationships(null) 返回null

示例 6. relationships()
查询
MATCH p = (a)-->(b)-->(c)
WHERE a.name = 'Alice' AND c.name = 'Eskil'
RETURN relationships(p)

返回一个包含PATH p中所有RELATIONSHIP值的LIST<RELATIONSHIP>

结果
relationships(p)

[[:KNOWS], [:MARRIED]]

行:1

reverse()

详情

语法

reverse(input)

描述

返回一个STRINGLIST<ANY>,其中给定STRINGLIST<ANY>中所有字符或元素的顺序已反转。

参数

名称

类型

描述

input

STRING | LIST<ANY>

要反转的字符串或列表。

返回值

STRING | LIST<ANY>

注意事项

original中的任何null元素都将保留。

另请参阅字符串函数 → reverse

示例 7. reverse()
查询
WITH [4923,'abc',521, null, 487] AS ids
RETURN reverse(ids)
结果
reverse(ids)

[487,<null>,521,"abc",4923]

行:1

tail()

详情

语法

tail(input)

描述

返回LIST<ANY>中除第一个元素之外的所有元素。

参数

名称

类型

描述

input

LIST<ANY>

将返回除第一个元素之外的所有元素的列表。

返回值

LIST<ANY>

示例 8. tail()
查询
MATCH (a) WHERE a.name = 'Eskil'
RETURN a.likedColors, tail(a.likedColors)

返回名为likedColors的属性和一个包含likedColors属性除第一个元素之外的所有元素的LIST<ANY>

结果
a.likedColors tail(a.likedColors)

["Pink", "Yellow", "Black"]

["Yellow", "Black"]

行:1

toBooleanList()

详情

语法

toBooleanList(input)

描述

将一个包含各种值的 LIST<ANY> 转换为一个包含布尔值的 LIST<BOOLEAN>。如果任何值无法转换为 BOOLEAN,则在返回的 LIST<BOOLEAN> 中将为 null。

参数

名称

类型

描述

input

LIST<ANY>

要转换为布尔值列表的值列表。

返回值

LIST<BOOLEAN>

注意事项

input 中的任何 null 元素都将被保留。

input 中的任何 BOOLEAN 值都将被保留。

如果 inputnull,则将返回 null

如果 input 不是 LIST<ANY>,则将返回错误。

list 中每个值的转换都根据 toBooleanOrNull() 函数 进行。

示例 9. toBooleanList()
查询
RETURN toBooleanList(null) as noList,
toBooleanList([null, null]) as nullsInList,
toBooleanList(['a string', true, 'false', null, ['A','B']]) as mixedList
结果
noList nullsInList mixedList

<null>

[<null>,<null>]

[<null>,true,false,<null>,<null>]

行:1

toFloatList()

详情

语法

toFloatList(input)

描述

LIST<ANY> 转换为 LIST<FLOAT> 值。如果任何值无法转换为 FLOAT,则在返回的 LIST<FLOAT> 中将为 null。

参数

名称

类型

描述

input

LIST<ANY>

要转换为浮点数列表的值列表。

返回值

LIST<FLOAT>

注意事项

list 中的任何 null 元素都将被保留。

list 中的任何 FLOAT 值都将被保留。

如果 inputnull,则将返回 null

如果 input 不是 LIST<ANY>,则将返回错误。

input 中每个值的转换都根据 toFloatOrNull() 函数 进行。

示例 10. 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

<null>

[<null>,<null>]

[<null>,2.5,3.14159,<null>,<null>]

行:1

toIntegerList()

详情

语法

toIntegerList(input)

描述

LIST<ANY> 转换为 LIST<INTEGER> 值。如果任何值无法转换为 INTEGER,则在返回的 LIST<INTEGER> 中将为 null。

参数

名称

类型

描述

input

LIST<ANY>

要转换为整数列表的值列表。

返回值

LIST<INTEGER>

注意事项

input 中的任何 null 元素都将被保留。

input 中的任何 INTEGER 值都将被保留。

如果 inputnull,则将返回 null

如果 input 不是 LIST<ANY>,则将返回错误。

list 中每个值的转换都根据 toIntegerOrNull() 函数 进行。

示例 11. toIntegerList()
查询
RETURN toIntegerList(null) as noList,
toIntegerList([null, null]) as nullsInList,
toIntegerList(['a string', 2, '5', null, ['A','B']]) as mixedList
结果
noList nullsInList mixedList

<null>

[<null>,<null>]

[<null>,2,5,<null>,<null>]

行:1

toStringList()

详情

语法

toStringList(input)

描述

LIST<ANY> 转换为 LIST<STRING> 值。如果任何值无法转换为 STRING,则在返回的 LIST<STRING> 中将为 null。

参数

名称

类型

描述

input

LIST<ANY>

要转换为字符串列表的值列表。

返回值

LIST<STRING>

注意事项

list 中的任何 null 元素都将被保留。

list 中的任何 STRING 值都将被保留。

如果 listnull,则将返回 null

如果 list 不是 LIST<ANY>,则将返回错误。

list 中每个值的转换都根据 toStringOrNull() 函数 进行。

示例 12. 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

<null>

[<null>,<null>]

["already a string","2","1955-11-05",<null>,<null>]

行:1