当使用可变长度路径时,Neo4J Cypher抓住了关系类型

时间:2015-05-08 13:45:34

标签: neo4j cypher

查询:

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的名称(类型)?

谢谢, 乙

1 个答案:

答案 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;