有一个"后退"在cypher中合并关系时的节点

时间:2017-02-13 12:53:57

标签: neo4j cypher

我试图为两个节点之间的关系编写合并查询。棘手的部分是,如果我没有在第二场比赛中找到节点,我想再做一场比赛来寻找一个"后退"具有不同过滤条件的节点用于合并请求。

简而言之:我想合并(A) - >(B)如果B存在而且(A) - >(C)如果B不存在。

这是我在查看不同帖子后想出的:

site.com/city1/123/some-text-here site.com/city2/123/some-text-here

但是它没有按预期工作:如果两个可选匹配节点都不为null,则会为每个节点创建两个关系。

谢谢!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

MATCH (n:ArticleConv {id:"firstId"})
OPTIONAL MATCH (m:ArticleCode {name:"targetName"}) WHERE m.begin <= n.begin <= m.end
OPTIONAL MATCH (l:ArticleCode {num:"targetName"}) WHERE not(()-[:Version]->(l))
WITH n, coalesce(m,l) AS node WHERE node IS NOT NULL
  MERGE (n)-[r:Link]->(node)

干杯