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

Neo4j add nodes only on merge create

我有一个密码,如下所示

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

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

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

这是如何实现的?

Cypher 中目前没有内置条件创建,我想它将被添加到未来的版本中。

现在你可以做一个小技巧,在创建时你在关系上设置一个 属性 来告诉它是一个新的创建,然后你在这个 [=18] 上做一个 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