列表

Cypher® 包含对列表的全面支持。

有关用于检查列表成员资格的列表谓词运算符 IN 的信息,请参阅 表达式 → 谓词 → 列表运算符。有关列表连接 (+||)、列表元素访问与切片 ([]) 以及列表和模式推导的信息,请参阅 列表表达式

列表概览

字面量列表通过使用方括号并将列表中的元素用逗号分隔来创建。

查询
RETURN [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] AS list
结果
list

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

行:1

列表可以包含不同类型的值。

查询
RETURN [0, "hello", 3.14, null] AS list
结果
list

[0, "hello", 3.14, null]

行:1

包含 VECTOR 值作为嵌套条目的列表不能作为属性存储。

在 Cypher 中,列表索引从 0 开始。要访问列表中的单个元素,请使用方括号。这会从起始索引开始提取,直到(但不包括)结束索引。

例如:

查询
WITH [5,1,7] AS list
RETURN list[2]
结果
list[2]

7

行:1

列表范围与大小

以下示例使用 range 函数来创建列表。该函数返回一个包含给定起始数字和结束数字之间所有数字的列表。该范围在两端都是包含的。

查询
RETURN range(0, 10)[3] AS element
结果
element

3

行:1

也可以使用负数,从列表末尾开始计数。

查询
RETURN range(0, 10)[-3] AS element
结果
element

8

行:1

最后,可以在方括号内使用范围来返回列表的切片。列表范围运算符 ([]) 包含第一个值,但不包含最后一个值。

查询
RETURN range(0, 10)[0..3] AS list
结果
list

[0,1,2]

行:1

查询
RETURN range(0, 10)[0..-5] AS list
结果
list

[0,1,2,3,4,5]

行:1

查询
RETURN range(0, 10)[-5..] AS list
结果
list

[6,7,8,9,10]

行:1

查询
RETURN range(0, 10)[..4] AS list
结果
list

[0,1,2,3]

行:1

越界的切片会被简单地截断,但越界的单个元素会返回 null

查询
RETURN range(0, 10)[15] AS list
结果
list

<null>

行:1

查询
RETURN range(0, 10)[5..15] AS list
结果
list

[5,6,7,8,9,10]

行:1

列表的 size 可通过以下方式获取

查询
RETURN size(range(0, 10)[0..3]) AS list
结果
list

3

行:1

将列表存储为属性

可以将简单值的同构列表存储为属性。

允许 - 存储同构列表作为属性
CREATE (n:Label)
SET n.listProperty = [1, 2, 3]
RETURN n.listProperty AS homogenousListProperty
结果
homogenousListProperty

[1, 2, 3]

行:1

但是,不能将异构列表存储为属性。

不允许 - 存储异构列表作为属性
CREATE (n:Label)
SET n.listProperty = [1, "hello", .45, date()]
RETURN n.listProperty AS heterogenousListProperty
GQLSTATUS 错误链

22N39: 错误: 数据异常 - 不支持的属性值类型。值 String("hello") 不能存储在属性中。

22G03: 错误: 数据异常 - 无效的值类型

© . This site is unofficial and not affiliated with Neo4j, Inc.