Neo4j仅在合并创建时添加节点

时间:2015-04-19 05:03:16

标签: neo4j cypher

我有一个类似于以下

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

现在我只想在合并创建(不匹配)时添加以下节点和关系:

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

这是如何实现的?

1 个答案:

答案 0 :(得分: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