我找不到这个问题。我有以下图表
A-[x]->B
B-[y]->C
B-[x]->C
C-[y]->F
C-[x]->D
我想匹配A- [x] - > B- [x] - > C但是使用关系名称' x'在查询的第1部分找到 查询的B- [x] - > C部分中的A- [x] - > B。我有随机分配的关系类型,所以我需要构建一个非关系类型的查询,但是可以使用第一个匹配关系作为路径其余部分的关系类型。
有谁知道怎么做?
答案 0 :(得分:1)
不幸的是,您无法参数化关系类型,因此查询必须更加复杂。
你可以从这样的事情开始:
MATCH (a:Node)-[r]-(b:Node)
WITH a, r, TYPE(r) AS type, b
MATCH path=b-[rr*]-c
WHERE ALL (rrtype IN RELATIONSHIPS(path)
WHERE type = TYPE(rrtype))
RETURN a, r, path
此查询符合您从a
到b
的关系,并使用WITH
运算符来继承初始关系的类型。然后,它会匹配从b
到c
的所有可能路径。最后,WHERE ALL
子句筛选出关系的 all 类型与原始关系类型不匹配的任何路径。
由于所有内容都不受约束,因此价格昂贵,因此请尽可能添加一些标签和关系类型(显然,添加a
,b
和c
的初始匹配代码