0

我正在尝试在此 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 的作者。我做错了什么吗?

4

2 回答 2

2

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

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

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

于 2016-04-18T23:59:01.027 回答
0

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

MATCH (a:Male), (b:Female)
WHERE a.name = 'Jose Arcadio Buendia' AND b.name = 'Ursula Iguaran'
CREATE (a)-[:HUSBAND]->(b);
于 2016-04-18T23:14:51.893 回答