创建唯一使重复节点

时间:2013-06-11 18:09:31

标签: neo4j cypher

我要做的是建立一个人与AWARDED Degree节点的关系。这些Degree节点中只应有一个MBA,而MBA的每个节点都会指向这一个节点。

问题是,当我与另一个人的startNode运行此查询时,它会创建一个新的Degree{value:'MBA'}节点。我怎样才能将它指向同一个MBA节点?

我的Cypher查询:

START startNode=node(1)

CREATE UNIQUE
startNode-[:HAS_EDUCATION]->(nodeEducation1:Education{graduated_year:1901})

CREATE UNIQUE  nodeEducation1-[:AWARDED]->(a:Degree{value:'MBA'})

RETURN a;

1 个答案:

答案 0 :(得分:2)

创建唯一不会自行尝试匹配节点[1]。 您可以做的是使用merge功能匹配Degree节点(仅在必要时创建一个),然后create unique关系和中间节点。

START startNode=node(9)
MERGE( phd:Degree {value: 'PHD'})
CREATE UNIQUE
startNode-[:HAS_EDUCATION]->(nodeEducation1:Education{graduated_year:1901})

CREATE UNIQUE  nodeEducation1-[:AWARDED]->phd

RETURN phd