2016-08-25 1 views
3

J'ai un ensemble de noeuds avec plusieurs étiquettes (A, B, C). Tous les nœuds ont une propriété commune, unique sur toutes les étiquettes. Cependant, lors de la création d'une contrainte unique, elle est limitée à une étiquette, n'est-ce pas?Contrainte unique de Neo4J pour plusieurs étiquettes

Documentation dit quelque chose comme:

CREATE CONSTRAINT ON (n:A) ASSERT n.uid IS UNIQUE

Mais je voudrais faire quelque chose comme

CREATE CONSTRAINT ON (n:A AND n:B AND n:C) ASSERT n.uid IS UNIQUE

ou

CREATE CONSTRAINT ON (n) ASSERT n.uid IS UNIQUE

Si cela n'est pas possible, serait-il préférable de créer un label D, et de l'ajouter à tous les nœuds avec les labels A, B et C, puis de créer la contrainte pour l'étiquette D?

Répondre

3

Votre suggestion est exactement ce que j'ai utilisé dans un cas similaire. J'ai créé une étiquette destinée à englober deux autres étiquettes, et ajouté la contrainte sur la nouvelle (en plus des autres).

La seule astuce consiste à ne pas oublier d'appliquer cette étiquette en plus des nouveaux nœuds que vous créez avec les sous-étiquettes.

Ce ne serait pas une mauvaise idée de faire une demande de fonctionnalité neo4j pour des contraintes qui s'appliquent à plusieurs étiquettes, ce serait plutôt utile.

+1

Merci pour votre réponse. Demande de fonctionnalité peut être trouvé ici: https://github.com/neo4j/neo4j/issues/7814 – naraesk