Neo4j中节点之间没有正确应用关系

时间:2016-04-18 22:46:18

标签: neo4j cypher family-tree

我正在尝试运行this GraphGist上的代码来玩Neo4j中的Buendia Family Tree。

当我创建两个节点并尝试用关系连接它们时,如下:

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

然后

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

然后

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

我明白了:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

<bean id="multiResourceReader"  
      class=" org.springframework.batch.item.file.MultiResourceItemReader" >