我有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条件。 谁能告诉我我可以使用的正确查询吗?
答案 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