3.4.3 列表函数
列表(List)函数返回列表中的元素,如路径中的节点等。
List图例如图3-25所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P213_92898.jpg?sign=1739498833-V1Kj0y4YauJHUAZJ7suDWONApzLiX8Fh-0-913add8466a068b563f64996415d289a)
图3-25 List图例
3.4.3.1 nodes()
返回一条路径中的所有节点。
语法:nodes(path)
参数:
● path:一条路径。
查询返回了路径p中的所有节点。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P214_102882.jpg?sign=1739498833-7kxl3bju1KLNiO4wkdfahWnATxRyQhG1-0-6f918eff77e06f1027b30fcd18e649e1)
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P214_102885.jpg?sign=1739498833-PGhBDr9Sa1hvnhNqQziyDbdjLPrI24bH-0-d6c7a30c924a2a7fb60f20b90911736d)
3.4.3.2 relationships()
返回一条路径中的所有关系。
语法:relationships(path)
参数:
● path:一条路径。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P214_102883.jpg?sign=1739498833-WHhKROWKJzIQQFq2izrUXyigMRDfoRaS-0-1d98eb7839750d74cb0eafab67c4beef)
查询返回了路径p中的所有节点关系。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P214_102887.jpg?sign=1739498833-KdK9YuKwL2yILr5X0j9smqWIGNIR1mlm-0-7c415c63d3a8fbdf5debf694c6b0106c)
3.4.3.3 labels()
以字符串列表的形式返回一个节点的所有标签。
语法:labels(node)
参数:
● node:返回单个节点的任意表达式。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P214_102884.jpg?sign=1739498833-OUizQWsj58M5TLoO11aK1t7hiqsSdLzP-0-f2fb8acbacdb155c4ffbe9776d618259)
查询返回了节点n的所有标签。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P215_102891.jpg?sign=1739498833-5nMWGAnWwai9fwPpKUahdFX4Cnwrbo8q-0-11dd817ee53f1140c4ab562314b48d6f)
3.4.3.4 keys()
以字符串列表的形式返回一个节点、关系或者map的所有属性的名称。
语法:keys(property-container)
参数:
● property-container:一个节点、关系或者字面值的map。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P215_102889.jpg?sign=1739498833-k36fdxq6Lv4cIaCOsqystRlYqWcWm6GB-0-4d1e8ae4a39b6740b17b09e359c990e3)
查询返回了节点a的属性名。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P215_102893.jpg?sign=1739498833-6N73q7DTG223vQRMbCxonOOmI6aNbZdP-0-d117dd6cc8de2cfa77923df4ff6c088d)
3.4.3.5 extract()
可以使用extract()从节点或关系列表中返回单个属性或者某个函数的值。它将遍历整个列表,针对列表中的每个元素运行一个表达式,然后以列表的形式返回这些结果。它的工作方式类似于Lisp和Scala等函数式语言中的map方法。
语法:extract(variable IN list | expression)
参数:
● list:返回列表的表达式。
● variable:引用list中元素的变量,它在expression中会用到。
● expression:针对列表中每个元素所运行的表达式,并产生一个结果列表。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P215_102890.jpg?sign=1739498833-JuO7rcVsKOlcS0b2ioXA7MQ8SbYq4XP8-0-47bd61ac97fb3f7a88b5fc43eefc2e2a)
结果将返回路径中所有节点的age属性。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P216_102044.jpg?sign=1739498833-EueqOJ7IoCLUHl23oENGFWNsLtFk8U4i-0-2336a38b4fc09695806f8cd7c445b564)
3.4.3.6 filter()
filter()返回列表中满足断言要求的所有元素。
语法:filter(variable IN list WHERE predicate)
参数:
● list:返回列表的表达式。
● variable:断言中引用列表元素所用到的变量。
● predicate:针对列表中每个元素进行测试的断言。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P216_102897.jpg?sign=1739498833-bEDJFW91T633xZRBegSULTGVW6g0IL2i-0-d0c5c63072b0a625035fb28e413e0669)
结果将返回array属性,及其元素的字符数为3的元素列表。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P216_102899.jpg?sign=1739498833-cXENJg0KPdJzZRsHYYSgrFkd7A6YDe0O-0-e43dcd0bee26602c7554bf6041a48853)
3.4.3.7 tail()
tail()返回列表中除了首元素之外的所有元素。
语法:tail(expression)
参数:
● expression:返回某个类型列表的表达式。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P216_102898.jpg?sign=1739498833-sfedGuOp1jMvzJK8H7DzzY96PAcQq74C-0-7d91150b1e7ea35942ffd2055b98121a)
结果将返回array属性及属性中除了第一个之外的所有元素。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P216_102052.jpg?sign=1739498833-Fd1m0NMVz8xC2khleAYAHup16LXhreO7-0-1e13ff361fc50c569861064762fe70f2)
3.4.3.8 range()
range()返回某个范围内的数值。值之间的默认步长为1,范围包含起始边界值。
语法:range(start, end [, step])
参数:
● start:起点数值的表达式。
● end:结束数值的表达式。
● step:数值间隔的步长。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P217_93059.jpg?sign=1739498833-yTH0VwCbR3DfBMcV1ETgbR6FO74JqT5j-0-866953c5a44a6784ef579f53052acd77)
第一个返回了0~10步长为1的所有值,第二个返回了2~18步长为3的所有值。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P217_102905.jpg?sign=1739498833-Le0Nc8tv7xMXP5b2tSKcpKxpZRhqSVY4-0-0acd6a771bf3df805bfe6b5bd2f44040)
3.4.3.9 reduce()
可以用reduce()对列表中的每个元素执行一个表达式,将表达式结果存入一个累加器。它的工作机制类似Lisp和Scala等函数式语言中的fold或者reduce方法。
语法:reduce(accumulator = initial, variable IN list | expression)
参数:
● accmulator:用于累加每次迭代的部分结果。
● initial:累加器的初始值。
● list:列表。
● variable:引用列表中的每个元素的变量。
● expression:针对列表中每个元素执行的表达式。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P217_102901.jpg?sign=1739498833-jrO5bAzOWDJEEbp6XXStJhPTyvZkYDFd-0-c8eb5378e6f7bff8ecbdb2c5c80daaf2)
本查询将路径中每个节点的age数值加起来,然后返回一个单值。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P218_102058.jpg?sign=1739498833-3KqIkIDaIZGukmdZ6SyyMavyIrDvpbN4-0-75a68c272b93a1cb3eb0b26f1b62e535)