Neo4j关系未在图表中显示连接线

时间:2015-02-12 00:26:39

标签: neo4j

我在neo4j中创建了以下节点和关系

CREATE (United_States:Citizenship { type : “Naturalized”})
CREATE (United_States:Citizenship { type : “Native_Born”})

CREATE (uid:Person { unique_id: 'A23AF39D-BEED-4FFC-B080-1362920FA7A8', id_type: '128bit_UUID' })

MATCH (uid:Person),(Native_Born:Citizenship) WHERE uid:Person="A23AF39D-BEED-4FFC-B080-1362920FA7A8" CREATE (uid) <- [ r:PersonUniqueIdentifier ] -> (Native_Born)

CREATE (fn:Person { first_name:'Willie', id_type:'128bit_UUID'})
CREATE (ln:Person { last_name:'Armstrong', id_type:'128bit_UUID'}))

CREATE CONSTRAINT ON (uid:Person) ASSERT Person.unique_id IS UNIQUE

CREATE INDEX ON :Person(unique_id)

我没有在Citizenship节点和图表上的id:Person节点之间看到'PersonUniqueIdentifier'关系。

Screen shot of graph

1 个答案:

答案 0 :(得分:2)

首先,我会养成先做索引/约束的习惯。这里没有很多数据,但如果在添加数据后添加索引,则需要首先遍历所有节点。此外,创建约束还会为您添加索引,因此不需要该行。看起来你在这里混淆变量,所以重构一下:

CREATE CONSTRAINT ON (person:Person) ASSERT person.unique_id IS UNIQUE

您的Citizenship CREATE也使用相同的变量名称。我不知道这是否一定会导致问题,但无论如何这样做更简单:

CREATE (:Citizenship { type : “Naturalized”}), (:Citizenship { type : “Native_Born”})

这句话对我来说很好(但是,如果你愿意的话,你可能会丢失变量):

CREATE (person:Person { unique_id: 'A23AF39D-BEED-4FFC-B080-1362920FA7A8', id_type: '128bit_UUID' })

这里有一些问题。以下是我如何重构它:

MATCH (person:Person),(citizenship:Citizenship)
WHERE
  person.unique_id="A23AF39D-BEED-4FFC-B080-1362920FA7A8",
  citizenship.type = 'Native_Born'
CREATE (person)-[:HAS_CITIZENSHIP]->(citizenship)

我不确定你想在这做什么。看起来你想要创建一个人,所以我会这样做:

CREATE (:Person { first_name:'Willie', id_type: '128bit_UUID', last_name:'Armstrong'})