列表函数

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

有关使用 LIST 值的更多信息,请参阅

示例图

以下图用于下面的示例

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)

描述

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

参数

名称

类型

描述

input

NODE | RELATIONSHIP | MAP

一个节点或关系,将从中返回所有属性的名称。

返回

LIST<STRING>

注意事项

keys(null) 返回 null

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

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

结果
keys(a)

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

行数: 1

labels()

详情

语法

labels(input)

描述

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

参数

名称

类型

描述

input

NODE

一个节点,将返回其标签。

返回

LIST<STRING>

注意事项

labels(null) 返回 null

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

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

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

结果
labels(a)

["Developer"]

行数: 1

nodes()

详情

语法

nodes(input)

描述

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

参数

名称

类型

描述

input

PATH

一个路径,将返回其节点。

返回

LIST<NODE>

注意事项

返回的 LIST 中的 NODE 值保证按照它们在路径遍历中出现的精确顺序排列,从起始节点到结束节点。

nodes(null) 返回 null

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

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

结果
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])

描述

返回一个 LIST<INTEGER>,其中包含在指定范围内创建的所有 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 = initial, variable IN list | expression)

描述

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

参数

名称

类型

描述

accumulator

ANY

一个变量,在迭代 list 时保存结果。从 initial 值开始。

initial

ANY

accumulator 的起始值。

variable

ANY

一个变量,在迭代期间表示 list 中的每个元素。

list

LIST<ANY>

正在迭代的 list

expression

ANY

一个在每次迭代时更新 accumulator 的表达式。

返回

ANY

注意事项

reduce() 与大多数 Cypher® 函数不同,因为它会迭代列表,根据表达式逐步更新累加器中的每个元素,而不是从单个评估中返回结果。因此,Cypher 的 reduce() 类似于 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)

描述

返回一个 LIST<RELATIONSHIP>,其中包含 PATH 中的所有 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)

返回一个 LIST<RELATIONSHIP>,其中包含路径 p 中的所有 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 的属性以及一个 LIST<ANY>,其中包含 likedColors 属性除第一个元素外的所有元素。

结果
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() 函数进行。

["already a string","2","1955-11-05",<null>,<null>]
查询
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>]

图函数 LOAD CSV 函数

行数: 1

© . All rights reserved.