Neo4j 中节点之间的关系未正确应用

Relationship not being applied correctly between nodes in Neo4j

我正在尝试 运行 this GraphGist 上的代码以在 Neo4j 中使用 Buendia 家谱。

当我创建两个节点并尝试将它们与关系连接起来时:

CREATE (JoseArcadioBuendia:Male {name:'Jose Arcadio Buendia',Gender:'Male'})   

然后

CREATE (UrsulaIguaran:Female {name:'Ursula Iguaran',Gender:'Female'})  

然后

CREATE (JoseArcadioBuendia)-[:HUSBAND]->(UrsulaIguaran)

我明白了:

为什么这个代码不正确?语法看起来不错,对于 Gist 的作者来说似乎 运行。我做错了什么吗?

第三行不正确。您没有指定任何节点。尝试以下操作:

MATCH (a:Male), (b:Female)
WHERE a.name = 'Jose Arcadio Buendia' AND b.name = 'Ursula Iguaran'
CREATE (a)-[:HUSBAND]->(b);

我认为您没有在单个查询中包含所有 3 个 CREATE 子句。

Cypher 标识符(如 JoseArcadioBuendiaUrsulaIguaran)仅在单个查询的生命周期内存在。数据库不会保留这些标识符。因此,如果您的查询仅包含 CREATE (JoseArcadioBuendia)-[:HUSBAND]->(UrsulaIguaran)),neo4j 将不知道节点已经存在,因此会为您创建 2 个新节点(以及关系)。

如果您将所有 3 个子句放在一个查询中,您会看到预期的结果。否则,您的查询首先必须使用 MATCH 将这些标识符与正确的节点相关联(类似于@Bond 的回答)。