假设我有以下图表:
CREATE
(a:SomeValue {name:'A'}),
(b:SomeValue {name:'B'}),
(c:SomeValue {name:'*'}),
(a)-[:CHILD_OF]->(b),
(b)-[:CHILD_OF]->(c),
(c:SomePath {path:'A-B'}),
(c)-[:FROM]->(a),
(c)-[:TO]->(b),
(d:SomePath {path:'*-*'}),
(d)-[:FROM]->(c),
(d)-[:TO]->(c)
假设我正在寻找(path)-[:FROM]->(b)
和(path)-[:TO]->(b)
的配置。
显然,在我的图表中没有'B-B'
路径,所以我希望某种回退搜索能够查找'*-*'
的存在,这是默认路径。
基本上我要说的是:找一个(path)-[:FROM]->(b)
,如果没有,请将最近的 SomeValue x
绑定到{{1}通过满足b
关系的CHILD_OF
关系。
有没有办法用Cypher表达这个?
答案 0 :(得分:0)
dierre,
我认为你可以通过UNION实现这一目标。
MATCH p=(b:SomeValue)<-[:FROM]-(a:SomePath)-[:TO]->(b)
RETURN p
UNION
MATCH p=(b:SomeValue)<-[r:CHILD_OF*]-(c:SomeValue)<-[:FROM]-(a:SomePath)-[:TO]->b
RETURN p
恩典与和平,
吉姆