2016-09-28 8 views
0

リレーションシップを持つノードに一意の属性を作成しようとしています。問題は固有の属性がラベル 'B'にのみユニークであることです。ラベル 'A'にも固有である必要があります。多くのラベルにわたってユニークな制約を持つことは可能ですか?プロパティと同様に一意のノードとリレーションシップを作成する

MATCH (user:A { userId: '57e3c97c6a430242328878ec' }) 
CREATE UNIQUE (user)-[:KNOWS]-(telephone:B{telephone: '+447735150512'}) 
RETURN telephone 

答えて

2

ラベルAとBのノード上で(おそらくもっと?)ユニークである必要があり

今その権利のためにサポートしていませあるが、それはいくつかを必要とするものの、回避策は、ありあなたのアップキープ。

ノードに複数のラベルを付けることができます。したがって、複数の他のラベル(ラベルAとラベルBを持つノードに適用されるスーパーラベルC)のノードに追加的に適用されるラベルを作成する場合、そのプロパティのCに一意の制約を作成できます。すべてのAノードとBノードがCでラベル付けされていることを確認する必要がありますが、そのノードがある場合は、新しいAノードまたはBノード(さらにCというラベルが付いています)を作成することはできません。すでに別のCノードで使用中です。

このアプローチの欠点は、AノードまたはBノードを作成してもCノードでラベル付けするのを忘れた場合、Cノードでのみ発生するため、ユニーク制約は適用されません。

+0

ありがとうございます。解決策の例はhttps://github.com/neo4j/neo4j/issues/7814です – TheNickyYo

関連する問題