Cypher查询 - 检查关系是否存在,如果不存在,则检查另一个关系。

3
我想查询一个节点是否存在关系,如果不存在,则查询同一节点的另一种关系类型。
例如,(a:Type)-[:relation1]-(b)如果存在relation1关系,则查询返回节点b。如果不存在,则会检查另一种关系类型,如(a:Type)-[:relation2]-(b)并返回节点b
我想知道如何将此写成单个Cypher查询。感谢任何帮助。谢谢。
2个回答

2
使用 UNION 怎么样?
MATCH (a:Type)-[:relation1]-(b)
RETURN b
UNION
MATCH (a:Type)-[:relation2]-(b)
RETURN b

希望这能帮到您, 汤姆

2

如果第一个关系节点为null,您可以使用COALESCE()函数来备份选择。

// after you've already matched to a
OPTIONAL MATCH (a)-[:relation1]-(b)
OPTIONAL MATCH (a)-[:relation2]-(c)
WITH a, COALESCE(b, c) as b // will use node c if b is null
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接