无法使用 MATCH 和 MERGE

问题描述

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

谁能解释一下为什么这段代码没有做任何事情:

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 manual screenshot

解决方法

MATCH 子句仅查看节点或模式是否存在,如果找到则返回该节点或模式,而不会创建节点或模式,另一方面, MERGE 子句查找节点或模式,如果不存在则创建一个。