我正在尝试获取长度为1到3的两个节点之间的所有路径。我想检索它们之间的所有节点和关系。
我正在使用查询:
MATCH p=(p1:DOG)-[:A|:B|:C*1..3]->(p3:PERSON)
RETURN p
我没有获得关系类型。我该怎么办?
答案 0 :(得分:2)
关系位于返回的路径对象中。您只需使用relationships
将它们拉出到集合中,然后返回每个类型。像这样......
MATCH p=(p1:DOG)-[:A|B|C*1..3]->(p3:PERSON)
WITH relationships(p) as rels
UNWIND rels as r
RETURN type(r)
这可能会说明你正在寻找更好的东西
MATCH p=(p1:DOG)-[:A|B|C*1..3]->(p3:PERSON)
RETURN reduce( path_str = "", r in relationships(p) | path_str + startNode(r).name + ' --> ' + type(r) + ' --> ') +
(nodes(p)[length(p)]).name
答案 1 :(得分:2)
这是一种在路径中返回关系类型集合的简明方法:
MATCH (:DOG)-[rels:A|:B|:C*1..3]->(:PERSON)
RETURN [r IN rels | TYPE(r)];
当您匹配可变长度路径时,与*
(rels
)的关系是集合的关系。所以,你只需要提取每个关系的TYPE
。