2013-08-02 136 views
3

我想用新節點和兩個新關係替換一個關係(如果存在)。下面的查詢測試關係是否存在,但在新節點創建時失敗。 CREATE語法獨立工作,但不嵌套在FOREACH循環中。Neo4j 2.0 Cypher查詢 - 在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

我與CREATE聲明這個小樣本圖http://console.neo4j.org/r/976pas用下面的查詢測試的FOREACH部分組合:

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