Neo4J Cypher 在使用可变长度路径时抓取关系类型

Neo4J Cypher grabbing type of relations when using variable length paths

查询:

Match (d:User {name:"User"}) -[r:IS_MEMBER_OF]->(g:Group:Local) - [r1:IS_SUBGROUP_OF*0..]->(g1:Group) Return type(r), type(r1)

密码命令类型对没有可变长度路径的关系有效,但对可变路径无效,即使它们具有相同的名称。我如何从查询中获取 r1 的名称(类型)作为 return?

谢谢, B

不幸的是,2.2.1 版(可能还有一些更早的版本)中似乎有 a bug 阻止了它的工作:

MATCH (:User { name:"User" })-[r:IS_MEMBER_OF]->(:Group:Local)-[r1:IS_SUBGROUP_OF*0..]->(:Group)
RETURN type(r), EXTRACT(rel IN r1 | type(rel)) AS ancestorGroupTypes;

因此,这是一种解决方法,直到上述更简单的查询再次起作用为止:

MATCH p=(:User {name:"User"})-[r:IS_MEMBER_OF]->(:Group:Local)-[r1:IS_SUBGROUP_OF*0..]->(:Group)
Return type(r), EXTRACT (rel IN TAIL(RELATIONSHIPS(p)) | type(rel)) AS ancestorGroupTypes;