2015-04-19 48 views
0

我有一個看起來像下面Neo4j的只在合併添加節點創建

MERGE (col)-[:CONNECTS]->(o) 
ON CREATE SET col.name = "SOME NAME" 

一個暗號現在我想添加下面的節點和關係只有當合並創建(不匹配):

CREATE (o)-[:NEEDS]->(p:anode) 

這是如何實現的?

回答

2

現在在Cypher中沒有內置的條件創建,我想它會被添加到即將推出的版本中。

現在你可以做一個小技巧,當你創建你的關係時設置一個屬性來告訴它是一個新的創建,然後你對這個屬性做一個foreach/case,創建另一個關係並刪除屬性。

代碼解釋勝於言:

MERGE (col)-[r:CONNECTS]->(o) 
ON CREATE SET col.name = "SOME NAME", r.new = 1 
FOREACH (x IN CASE WHEN r.new = 1 THEN [1] ELSE [] | 
         CREATE (o)-[:NEEDS]->(p:anode) 
     ) 
REMOVE r.new