Neo4j 匹配一个或另一个条件
我正在尝试这样做:Neo4j 匹配一个或另一个条件,neo4j,cypher,flow,Neo4j,Cypher,Flow,我正在尝试这样做: MATCH (c:Flow)-[y:AppliFlux]-(d:Application) OPTIONAL MATCH (c)-[r:FlowPart]-(e:Partner) return c 流量必须与以下各项相关: 应用程序或 合伙人 我的流必须具有这两种关系之一。 我试着这样做: MATCH (c:Flow)-[y:AppliFlux]-(d:Application) OPTIONAL MATCH (c)-[r:Flo
MATCH (c:Flow)-[y:AppliFlux]-(d:Application)
OPTIONAL MATCH (c)-[r:FlowPart]-(e:Partner)
return c
- 流量必须与以下各项相关:
- 应用程序或
- 合伙人
MATCH (c:Flow)-[y:AppliFlux]-(d:Application)
OPTIONAL MATCH (c)-[r:FlowPart]-(e:Partner)
return c
但它没有返回我需要的东西。
感谢您的帮助您可以使用
其中
并通过关系存在性检查条件:
MATCH (c:Flow)
WHERE (c)-[:AppliFlux]-(:Application)
OR (c)-[:FlowPart]-(:Partner)
RETURN c
[编辑]
在聊天室中进行了一些讨论后,最符合问题要求的解决方案如下:
MATCH (a:Domain)-[r:AppliDom]-(b:Application)-[t:AppliFlux]-(c:Flow)-[y:AppliFlux]-(d:Application)-[u:AppliDom]-(e:Domain)
RETURN {a:a,c:c,e:e} as elements
UNION
MATCH (c)-[r:FlowPart]-(e:Partner)
RETURN {c:c} as elements
即:使用
UNION
返回投影。谢谢您的回复。但是如果我需要获得合作伙伴或应用程序,您的解决方案就不起作用。如果需要,我的查询返回可以更改。Hello@Philigane。您是否尝试过使用两个可选匹配项
s<代码>可选匹配(c:Flow)-[y:AppliFlux]-(d:Application)可选匹配(c)-[r:FlowPart]-(e:Partner)返回c再次感谢您的回复:)。如果我放入两个可选匹配项,我将得到一些没有任何这些关系的流。@Philigane和联合如何MATCH(c:Flow)-(y:AppliFlux)-(d:Application)返回c联合匹配(c)-(r:FlowPart)-(e:Partner)返回c
-(e:Partenaire)“