我可以从满足简单模式(长度为1)的所有关系中获取属性,例如:
MATCH ()-[r:RELATIONSHIP]->() RETURN collect(r.id)
但是无法获得可变长度关系的属性,例如:
MATCH ()-[r:RELATIONSHIP*]->() RETURN collect(r.id)
任何帮助将不胜感激。
错误消息是:Neo.ClientError.Statement.SyntaxError:类型 不匹配:预期的任何,地图,节点,关系,点,持续时间, 日期,时间,LocalTime,LocalDateTime或DateTime,但之前为 列表
答案 0 :(得分:0)
在简单模式(固定长度1)中,变量r
仅一种关系,但是在可变长度模式中,变量r
为关系列表。
您的第一个查询是正确的,但是在第二个查询中,您尝试从List
获取id属性,而不是从特定的relationship
获取。
您可以修改查询以从列表中获取属性,如下所示:
MATCH ()-[r:RELATED_TO*2]->()
UNWIND r as rel
RETURN COLLECT(DISTINCT id(rel))
不推荐使用上述模式(不建议使用与可变长度模式中的列表的绑定关系),并将在以后的版本中将其删除。
推荐的方法是将整个路径绑定到变量,然后提取关系:
MATCH path=()-[:RELATED_TO*2]->()
UNWIND relationships(path) AS rel
RETURN COLLECT(DISTINCT id(rel))