我有以下图表:
目前我正在使用此查询来添加两个节点之间的关系:
MATCH (a:Service),(b:Service)
WHERE a.service_id = 'cs2322' and b.service_id = 'ab3232'
CREATE (a)-[r:DEPENDENT_ON]->(b)
RETURN type(r)
Run Code Online (Sandbox Code Playgroud)
然而,我不想在任何两个节点之间有多个关系,因为我想可视化我的服务以及它们之间的依赖关系,所以我不能让一个服务两次依赖另一个节点。
如果我尝试在两个节点之间创建关系(这两个节点已经在每个方向上相互建立关系),有什么方法可以限制这一点,以强制 Neo4j 服务器抛出错误?
如果您创建重复关系,则没有内置方法可以引发错误。但这也是执行此类政策的一种相当昂贵的方式。
相反,您可以使用MERGE来CREATE
避免创建重复关系。
例如,此查询仅在DEPENDENT_ON
关系尚不存在时才创建;否则,它只会将现有关系绑定到r
:
MATCH (a:Service), (b:Service)
WHERE a.service_id = 'cs2322' AND b.service_id = 'ab3232'
MERGE (a)-[r:DEPENDENT_ON]->(b)
RETURN TYPE(r)
Run Code Online (Sandbox Code Playgroud)