既存のノード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
の関係が必要になります。
特に気に入らない解決策を 2 つ思いつきました。
次のようなオプションの関係でそれを行うことができると思います
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
しかし、ノードが既に存在する場合、追加の関係を作成する方法がわかりません。
もう 1 つのオプションは、次のようにc
一意に識別するa
とに関するプロパティを持つことb
です。
(a) <-[:FROM]- (c:Comp { from: a.uuid, to: b.uuid }) -[:TO]-> (b)
そのcreate unique
ため、部分一致からは開始されません。しかし、冗長なデータが横たわっているというのは臭いです。