我想用一个新节点和两个新关系替换一个关系(如果存在)。下面的查询测试关系是否存在但在新节点创建时失败。 CREATE语法本身可以工作,但不能嵌套在FOREACH循环中。
START s = node(1)
MATCH (u)-[r?:ROOT]->(s)
FOREACH (u in (CASE WHEN r<>NULL THEN [u] ELSE [] END):
CREATE (u)<-[:REL1]-(n {test:"test"})-[:REL2]->(s))
RETURN s
我收到错误说:
未知标识符n
答案 0 :(得分:1)
我使用以下查询在此小样本图http://console.neo4j.org/r/976pas上结合FOREACH
语句测试了CREATE
部分:
START s=node:node_auto_index(name='A')
MATCH (u)-[r:ROOT]->(s)
FOREACH (u IN (CASE WHEN r<>NULL THEN [u] ELSE [] END ):
CREATE (u)<-[:REL1]-(n { name:'TEST' })-[:REL2]->(s))
RETURN DISTINCT s
在neo4j控制台上运行良好。它按预期产生以下结果:http://console.neo4j.org/r/ekreri