我有预先存在的节点a
,b
并且想要创建一个路径
(a) <-[:FROM]- (c:Comp) -[:TO]-> (b)
除非它已经存在。create unique
在这里不太行,因为如果我们已经有了
(a) <-[:FROM]- (d:Comp) -[:TO]-> (e)
然后d
将被重用为c
,并且只会(c) -[:TO]-> (b)
创建关系。在这种情况下,我想创建一个新:Comp
节点。
无论:Comp
节点是否刚刚创建,我随后都想从中create unique
建立关系。
我提出了两种我不太喜欢的可能解决方案:
我想我可以通过可选的关系来做到这一点,比如
match (a) <-[r1?:FROM]- (c:Comp) -[r2?:TO]-> (b)
where r1 is null or r2 is null
create (a) <-[:FROM]- (d:Comp) -[:TO]-> (b)
但是我不确定如果:Comp
节点已经存在,我将如何创建额外的关系。
另一种选择是具有c
唯一标识a
和的属性b
,沿着
(a) <-[:FROM]- (c:Comp { from: a.uuid, to: b.uuid }) -[:TO]-> (b)
所以这create unique
不会从部分匹配开始。但是,周围有多余的数据是一种气味。