查询:
Match (d:User {name:"User"}) -[r:IS_MEMBER_OF]->(g:Group:Local) - [r1:IS_SUBGROUP_OF*0..]->(g1:Group) Return type(r), type(r1)
cypher命令类型对于没有可变长度路径的关系有效,但即使它们具有相同的名称也对有效路径无效。如何从查询中获取r1的名称(类型)?
谢谢, 乙
答案 0 :(得分:1)
不幸的是,版本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;