3.4.3 列表函数
列表(List)函数返回列表中的元素,如路径中的节点等。
List图例如图3-25所示。
图3-25 List图例
3.4.3.1 nodes()
返回一条路径中的所有节点。
语法:nodes(path)
参数:
● path:一条路径。
查询返回了路径p中的所有节点。
查询:
结果:
3.4.3.2 relationships()
返回一条路径中的所有关系。
语法:relationships(path)
参数:
● path:一条路径。
查询:
查询返回了路径p中的所有节点关系。
结果:
3.4.3.3 labels()
以字符串列表的形式返回一个节点的所有标签。
语法:labels(node)
参数:
● node:返回单个节点的任意表达式。
查询:
查询返回了节点n的所有标签。
结果:
3.4.3.4 keys()
以字符串列表的形式返回一个节点、关系或者map的所有属性的名称。
语法:keys(property-container)
参数:
● property-container:一个节点、关系或者字面值的map。
查询:
查询返回了节点a的属性名。
结果:
3.4.3.5 extract()
可以使用extract()从节点或关系列表中返回单个属性或者某个函数的值。它将遍历整个列表,针对列表中的每个元素运行一个表达式,然后以列表的形式返回这些结果。它的工作方式类似于Lisp和Scala等函数式语言中的map方法。
语法:extract(variable IN list | expression)
参数:
● list:返回列表的表达式。
● variable:引用list中元素的变量,它在expression中会用到。
● expression:针对列表中每个元素所运行的表达式,并产生一个结果列表。
查询:
结果将返回路径中所有节点的age属性。
结果:
3.4.3.6 filter()
filter()返回列表中满足断言要求的所有元素。
语法:filter(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:断言中引用列表元素所用到的变量。
● predicate:针对列表中每个元素进行测试的断言。
查询:
结果将返回array属性,及其元素的字符数为3的元素列表。
结果:
3.4.3.7 tail()
tail()返回列表中除了首元素之外的所有元素。
语法:tail(expression)
参数:
● expression:返回某个类型列表的表达式。
查询:
结果将返回array属性及属性中除了第一个之外的所有元素。
结果:
3.4.3.8 range()
range()返回某个范围内的数值。值之间的默认步长为1,范围包含起始边界值。
语法:range(start, end [, step])
参数:
● start:起点数值的表达式。
● end:结束数值的表达式。
● step:数值间隔的步长。
查询:
第一个返回了0~10步长为1的所有值,第二个返回了2~18步长为3的所有值。
结果:
3.4.3.9 reduce()
可以用reduce()对列表中的每个元素执行一个表达式,将表达式结果存入一个累加器。它的工作机制类似Lisp和Scala等函数式语言中的fold或者reduce方法。
语法:reduce(accumulator = initial, variable IN list | expression)
参数:
● accmulator:用于累加每次迭代的部分结果。
● initial:累加器的初始值。
● list:列表。
● variable:引用列表中的每个元素的变量。
● expression:针对列表中每个元素执行的表达式。
查询:
本查询将路径中每个节点的age数值加起来,然后返回一个单值。
结果: