合并以及neo4j中的位置

时间:2018-09-05 07:13:02

标签: neo4j cypher graph-databases

我有3个具有以下属性和关系的节点:

LocationNode : location,
PersonNode : fullName, 
CityNode: cityName
LocationNode<-[has_location]-(PersonNode)
PersonNode-[has_city]->(CityNode)

LocationNode是要删除的旧节点。 LocationNode数据将移动到新节点CityNode。对于所有与LocationNode有关系的PersonNode,我需要删除该关系并与CityNode创建一个新关系,其中LocationNode.location = CityNode.cityName

注意:无需在数据库中创建CityNodes。

我尝试了以下查询:

match (n:LocationNode)<-[r:has_location]-(j:PersonNode) delete r with n,j
merge (j)-[r2:has_city]->(h1:CityNode) where n.location = h1.cityName return j

我得到的错误是我在使用MERGE时无法使用WHERE条件。 谁能告诉我我可以使用的正确查询吗?

1 个答案:

答案 0 :(得分:0)

条件where不能与merge一起使用。并且由于CityNode节点存在,因此您需要match,并且merge和它与PersonNode之间的关系:

match (n:LocationNode)<-[r:has_location]-(j:PersonNode) delete r 
with n, j 
match (h1:CityNode) where n.location = h1.cityName
merge (j)-[r2:has_city]->(h1)
return j