我有一个场景,我必须为新关系创建节点,或者如果节点存在且存在关系,我必须用新的关系替换现有关系。两个节点之间只存在一种关系。
当我使用GDB.query从Python客户端调用时,下面的命令似乎不起作用:
match (a:user)-[r]->(b:user)
where a.id='3' and b.id='5'
merge (a)-[r2:test]->(b)
SET r2 = r SET r2.percentage = 80
WITH r
DELETE r
return r
MATCH (a:user),(b:user)
WHERE a.id='3' AND b.id='5'
MERGE (a)-[r:test]->(b)
RETURN r
答案 0 :(得分:3)
如果要将特定类型的现有关系替换为新关系:
FEATURE
但是,如果您只想在现有关系上设置属性并在缺少时创建它:
match (a:user {id:'3'})
match (b:user {id:'5'})
merge (a)-[newRel:NEW_TYPE]->(b) //create the new rel if missing
set newRel.percentage = 80
match (a)-[oldRel:OLD_TYPE]->(b) //match the old rel
delete oldRel //and delete it
答案 1 :(得分:0)
最后,得到了正确的查询。首先我们执行匹配,如果它不起作用,我们执行第二个查询,它执行创建,如果它已经存在,它就不会做任何事情。
match (a:user)-[r]->(b:user)
where a.id=3 and b.id=5
merge (a)-[r2:test4]->(b)
set r2.percentage = 50
delete r
return a,b, r2
MERGE (a:user {id:3})-[r:test]->(b:user {id:5})
ON CREATE
SET r.percentage = 55
ON MATCH
SET r.percentage = 55