Neo4j 2.0 Cypher查询 - 在FOREACH中创建

时间:2013-08-02 07:17:16

标签: neo4j cypher

我想用一个新节点和两个新关系替换一个关系(如果存在)。下面的查询测试关系是否存在但在新节点创建时失败。 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

1 个答案:

答案 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