Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 有一个;“撤退”;在cypher中合并关系时的节点_Neo4j_Cypher - Fatal编程技术网

Neo4j 有一个;“撤退”;在cypher中合并关系时的节点

Neo4j 有一个;“撤退”;在cypher中合并关系时的节点,neo4j,cypher,Neo4j,Cypher,我正在尝试为两个节点之间的关系编写一个合并查询。棘手的部分是,如果我找不到第二个匹配的节点,我想进行另一个匹配,以查找具有不同合并请求过滤条件的“回退”节点 简而言之,我想合并(A)->(B)(如果B存在)和(A)->(C)(如果B不存在) 这是我在看了不同的帖子后得出的结论: 匹配(n:ArticleConv{id:“firstId”}) 可选匹配(m:ArticleCode{name:“targetName”}),其中m.begin(o)) 但是,它并没有按预期工作:如果两个可选匹配节点

我正在尝试为两个节点之间的关系编写一个合并查询。棘手的部分是,如果我找不到第二个匹配的节点,我想进行另一个匹配,以查找具有不同合并请求过滤条件的“回退”节点

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

这是我在看了不同的帖子后得出的结论:


匹配(n:ArticleConv{id:“firstId”})
可选匹配(m:ArticleCode{name:“targetName”}),其中m.begin(o))

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


谢谢

您可以这样做:

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)
MATCH(n:ArticleConv{id:“firstId”})
可选匹配(m:ArticleCode{name:“targetName”}),其中m.begin(节点)

干杯

我喜欢你的解决方案,比我的更干净,而且我了解到联合在节点上工作^^