匹配一个或另一个条件

时间:2018-01-09 10:43:21

标签: neo4j cypher flow

我正在尝试做这样的事情:

  • Flow必须与以下关系:
    • 应用程序 OR
    • 合作伙伴

My Flow必须具有这两种关系中的一种。 我试过这样的事情:

    MATCH (c:Flow)-[y:AppliFlux]-(d:Application)
    OPTIONAL MATCH (c)-[r:FlowPart]-(e:Partner)
    return c

但它不会返回我需要的东西。 谢谢你的帮助

1 个答案:

答案 0 :(得分:3)

您可以使用WHERE条件检查关系存在:

MATCH (c:Flow)
WHERE (c)-[:AppliFlux]-(:Application)
OR (c)-[:FlowPart]-(:Partner)
RETURN c

<强> [编辑]

在聊天中进行了一些讨论后,最符合问题要求的解决方案如下:

MATCH (a:Domain)-[r:AppliDom]-(b:Application)-[t:AppliFlux]-(c:Flo‌​w)-[y:AppliFlux]-(‌​d:‌​Application)-[u:Appl‌​iDom]-(e:Domain) 
RETURN {a:a,c:c,e:e} as elements 
UNION 
MATCH (c)-[r:FlowPart]-(e:Partner) 
RETURN {c:c} as elements

即:使用UNION返回投影。