列表
Cypher® 包含对列表的全面支持。
有关检查列表成员资格的列表谓词运算符 IN 的信息,请参见 表达式 → 谓词 → 列表运算符。有关列表连接(+ 和 || )、列表元素访问和切片([] )以及列表和模式推导式的信息,请参见 列表表达式。 |
一般列表
字面列表通过使用方括号并用逗号分隔列表中的元素来创建。
查询
RETURN [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] AS list
列表 |
---|
|
行数: 1 |
列表可以包含不同类型的值。
查询
RETURN [0, "hello", 3.14, null] AS list
列表 |
---|
|
行数: 1 |
在 Cypher 中,列表的索引从 0 开始。要访问列表中的单个元素,请使用方括号。这会从起始索引开始提取,但不包括结束索引。
例如
查询
WITH [5,1,7] AS list
RETURN list[2]
list[2] |
---|
|
行数: 1 |
列表范围和大小
以下示例使用 range
函数来创建列表。此函数返回一个包含给定起始和结束数字之间所有数字的列表。该范围在两端都是包含的。
查询
RETURN range(0, 10)[3] AS element
元素 |
---|
|
行数: 1 |
也可以使用负数,从列表末尾开始。
查询
RETURN range(0, 10)[-3] AS element
元素 |
---|
|
行数: 1 |
最后,可以在方括号内使用范围来返回列表的范围。列表范围运算符([]
)包含起始值,但不包含结束值。
查询
RETURN range(0, 10)[0..3] AS list
列表 |
---|
|
行数: 1 |
查询
RETURN range(0, 10)[0..-5] AS list
列表 |
---|
|
行数: 1 |
查询
RETURN range(0, 10)[-5..] AS list
列表 |
---|
|
行数: 1 |
查询
RETURN range(0, 10)[..4] AS list
列表 |
---|
|
行数: 1 |
超出边界的切片会被简单截断,但超出边界的单个元素将返回 null
。
查询
RETURN range(0, 10)[15] AS list
列表 |
---|
|
行数: 1 |
查询
RETURN range(0, 10)[5..15] AS list
列表 |
---|
|
行数: 1 |
列表的 size
可以按如下方式获取
查询
RETURN size(range(0, 10)[0..3]) AS list
列表 |
---|
|
行数: 1 |
将列表存储为属性
可以将同构的简单值列表存储为属性。
允许 - 将同构列表存储为属性
CREATE (n:Label)
SET n.listProperty = [1, 2, 3]
RETURN n.listProperty AS homogenousListProperty
homogenousListProperty |
---|
|
行数: 1 |
但是,不可能将异构列表存储为属性。
不允许 - 将异构列表存储为属性
CREATE (n:Label)
SET n.listProperty = [1, "hello", .45, date()]
RETURN n.listProperty AS heterogenousListProperty
错误
Neo4j only supports a subset of Cypher types for storage as singleton or array properties. Please refer to section cypher/syntax/values of the manual for more details.