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
我有一个密码,如下所示
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