首页 > 解决方案 > 无法使用 MATCH 和 MERGE 匹配和创建节点

问题描述

我试图通过首先找到任何现有节点(使用 MATCH)然后通过重用现有节点或在任何节点不存在时创建新节点来创建关系(使用 MERGE)来创建节点层次结构。

有人可以解释为什么这段代码没有做任何事情:

CALL apoc.load.jdbc(...) YIELD row
MATCH (t:Taxonomy {key:row.TermKey})
MATCH (tp:Taxonomy {key:row.ParentKey})
MERGE (t)-[:CHILD_OF]->(tp)

但这一个可以完成工作:

CALL apoc.load.jdbc(...) YIELD row
MERGE (t:Taxonomy {key:row.TermKey})
MERGE (tp:Taxonomy {key:row.ParentKey})
MERGE (t)-[:CHILD_OF]->(tp)

我正在查看 Neo4j 手册,他们的示例确实如此,但由于某种原因对我不起作用。 Neo4j 手册截图

标签: neo4jcypher

解决方案


MATCH 子句只查找节点或模式是否存在,如果找到它返回节点或模式,它不创建节点或模式,另一方面,MERGE 子句查找节点或模式,如果不存在存在它创造一个。


推荐阅读