密码查询 - 检查关系,如果不存在,请检查另一个关系



我想检查节点中是否存在关系,如果找不到,那么我想检查来自同一节点的另一种关系类型。

类似于 (a:Type(-[:relation1]-(b( 如果 relation1 存在查询返回节点 b。 如果不存在,则将检查另一个关系,如 (a:Type(-[:relation2]-(b( 并返回节点 b

我想知道如何将其编写为单个密码查询。任何帮助将不胜感激。谢谢。

您可以使用 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
...

使用 UNION 怎么样?

MATCH (a:Type)-[:relation1]-(b)
RETURN b
UNION
MATCH (a:Type)-[:relation2]-(b)
RETURN b

希望对您有所帮助,汤姆

最新更新