2017-06-07 2 views
0

Ich habe 1 Regel für meine Datenbank. Alles muss eine "ID" haben. Da dies mein primäres Schlüsselfeld ist, möchte ich es indexieren, aber es scheint, als wäre die einzige Möglichkeit, einen Index zu erstellen, die Angabe eines Labels.Erstellen Sie einen Eigenschaftsindex für alle Knoten in Cypher

Also mit diesem Datensatz

CREATE (:TEST1{id:"<uuid>"}), 
(:RAWR{id:"<uuid>"}), 
(:FOO:BAR{id:"<uuid>"}), 
({id:"<uuid>"}) 

Ich möchte einen Index verwenden, um den unmarkierten Knoten durch seine UUID zu finden.

Ist das in Cypher möglich? Oder ist meine EINZIGE Möglichkeit, ein "Knoten" Etikett auf ALLES zu geben, das in die Datenbank einsteigt? (Es fühlt sich falsch an, ein Etikett zu erstellen und es dann alles zuzuordnen. Und alle Anfragen zum Hinzufügen dieses zusätzlichen Etiketts zu hapeln fühlt sich an, als würde ich nach Ärger fragen.)

+0

Ja, Sie benötigen ein Label, um einen Index zu erstellen. Überdenken Sie die Einstellung einer ID auf alles. Die UUID ist eine technische ID. Sie kann nach dem Löschen eines Knotens erneut für einen anderen Knoten verwendet werden. Benutze es nicht. –

+0

Ich sah das ist ein ID-Generator in Apoc. Sie haben möglicherweise eine Stapelabfrage, die regelmäßig ausgeführt wird, um Ihr ID-Feld zu erstellen (sind Sie sicher?) Mit einem Wert von apoc, der die Sequenz verarbeitet. –

+0

@JeromeB Ich bin nicht wirklich besorgt über die Zuordnung der ID, noch müssen sie tatsächlich einzigartig sein. Da ich weiß, dass es ein ID-Feld gibt, und ich habe den Wert dieses Feldes, aber nicht die Beschriftungen der Knoten, würde ich gerne in der Lage sein, schnell Knoten anhand dieser ID zu finden, anstatt alle zu durchsuchen Der Knoten wurde noch nicht mit einem Label versehen. – Tezra

Antwort

1

Ein Knoten kann mehrere Etiketten haben. Zusätzlich zu Ihren vorhandenen Beschriftungen können Sie also allen Ihren Knoten eine gemeinsame Beschriftung zuweisen und dann unter Verwendung dieser allgemeinen Beschriftung und id einen Index erstellen.

Da jedoch Sie beabsichtigen, die id Wert global eindeutig zu sein, anstatt eine Index der Schaffung Sie sollten ein uniqueness constraint erstellen (die automatisch einen Index für Sie als Nebeneffekt erzeugt). Das würde neo4j dazu bringen, die Eindeutigkeit für Sie durchzusetzen id.

Verwandte Themen