需要Merge的帮助,下面是方案
我有两种类型的节点,标签上写着LEADS和SUBORDINATES,并且它们之间会有关系(LEADS) - [:DEPENDS_ON] - >(SUBORDINATE)。
我正在更新LEADS节点属性需要更新与SUBORDINATES的关系
我的更新查询如下(批量更新)
UNWIND {updates} as lead
MERGE (l:LEADS {id: lead.id})
ON MATCH SET l += lead.properties
MATCH (subs:SUBORDINATES) WHERE subs.id IN lead.subordinates
MERGE (l)-[:DEPENDS_ON]->(subs)
我知道合并会创建不存在的新关系,但我需要删除任何不存在的旧关系。
如何删除未合并的旧版本?
更新#1
我找到了删除旧关系的方法,如下面
UNWIND {updates} as lead
MERGE (l:LEADS {id: lead.id})
ON MATCH SET l += lead.properties
MATCH (subs:SUBORDINATES) WHERE subs.id IN lead.subordinates
MERGE (l)-[r:DEPENDS_ON]->(subs)
ON CREATE SET r.lastUpdated = timestamp();
ON MATCH SET r.lastUpdated = timestamp();
MATCH (l)-[r_old:DEPENDS_ON]->(subs) where r_old.lastUpdated < timestamp();
DELETE r_old
现在问题是&#34;不更新关系&#34;当没有更新lead.subordinates时,即不修改subordiantes但修改了lead的某些属性。 我需要更多像关于lead.subordiantes不为空的关系的条件合并
在谷歌搜索后,才知道Neo4j中没有其他类似的方法,但是作为一个带有案例的foreach的工作可以像下面一样使用,但我的问题是MATCH赢得了在foreach中工作
FOREACH(ignoreMe IN CASE WHEN //Put conditions here//
THEN [1] ELSE [] END |//Put instruction here// )