仅当neo4j中不存在关系时才创建关系

Bak*_*ash 2 neo4j

我想在两个节点之间添加一个关系,但前提是该关系不存在。例如:

当前,node1和node2之间的关系具有以下属性: time:41221323,link:www.google.com

我试图添加具有不同属性的关系,例如:

time:5344241,link:www.google.com
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想保留关系的原始属性。

Bri*_*ood 5

你想要MERGEorCREATE UNIQUE子句:

http://neo4j.com/docs/stable/query-merge.html

http://neo4j.com/docs/stable/query-create-unique.html

另请注意,MERGE带有附加功能ON CREATE SETON MATCH SET因此您可以控制何时设置属性。

我相信,如果您将特定属性作为匹配语法的一部分,它不会仅在所有属性完全匹配时创建。

  • 请注意,自 Cypher 3.2 以来,CREATE UNIQUE 已被删除。相反,请使用合并。 (4认同)

Van*_*man 5

您可以使用以下CQL查询:

MATCH(a: startNodeLabel {attributes to match start node})
MATCH(m:endNodeLabel {attributes to match end node}) 
MERGE(a)-[:relationshipName]->(m)
Run Code Online (Sandbox Code Playgroud)

如果a和m之间不存在关系,则上面的merge语句将在节点a和m之间创建关系。