0

既存のノードabがあり、パスを作成したい

(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ため、部分一致からは開始されません。しかし、冗長なデータが横たわっているというのは臭いです。

4

2 に答える 2

1

コンソールであなたのモデルだと思うものを作成しました:http://console.neo4j.org/?id=l6q3q0

おそらくこれを試してください:

START a=node:node_auto_index(name='a'), b=node:node_auto_index(name='b')
WHERE NOT (a<-[:FROM]-(:Comp)-[:TO]->b)
CREATE a<-[:FROM]-(c:Comp), c-[:TO]->b
于 2013-11-06T20:08:42.763 に答える
0

まだ試していませんがMERGE、2.0.0-rc1 の時点でできるようです。http://docs.neo4j.org/chunked/milestone/query-merge.html

私は何かが欲しいでしょう

MERGE (a) <-[:FROM]- (c:Comp) -[:TO]-> (b)
CREATE UNIQUE (c) -[:SUGGESTED_BY]-> (x:Algo)
于 2013-12-12T11:02:46.503 に答える