Nein, wie Sie sagen, dynamische Etiketten Änderungen sind nicht möglich mit rohen Chiffre. Hauptsächlich weil Beschriftungen, Eigenschaftsschlüssel und Beziehungstypen Teil des Abfrageplans sind und zum Zwischenspeichern verwendet werden.
Es besteht die Möglichkeit Etiketten mit den APOC Verfahren dynamisch hinzuzufügen, wie hier erklärt:
https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_using_cypher_and_apoc_to_move_a_property_value_to_a_label
MATCH (n:Movie)
CALL apoc.create.addLabels(id(n), [ n.genre ]) YIELD node
REMOVE node.studio
RETURN node
Vielleicht könnte eine Funktion zu ersetzen/entfernen vorhandene Etiketten eine schöne Ergänzung zu der APOC sein .
UPDATE
Nachdem die Quelle der APOC Überprüfung gibt es ein Verfahren, das setLabels nicht passende Etiketten weitergegeben entfernen wird, zum Beispiel:
WITH ["A","B"] as labels
MATCH (m:Movie)
WITH collect(id(m))[0..20] as movies, labels
CALL apoc.create.setLabels(movies, labels) YIELD node RETURN node, labels(node)
│node │labels(node)│
╞══════════════════════════════╪════════════╡
│{tagline: Prepare to enter a s│[B, A] │
│ecret world of assassins, titl│ │
│e: Ninja Assassin, released: 2│ │
│009} │ │
├──────────────────────────────┼────────────┤
│{tagline: Walk a mile you'll n│[B, A] │
│ever forget., title: The Green│ │
│ Mile, released: 1999} │ │
├──────────────────────────────┼────────────┤
│{tagline: 400 million people w│[B, A] │
│ere waiting for the truth., ti│ │
│tle: Frost/Nixon, released: 20│ │
│08} │ │
├──────────────────────────────┼────────────┤
│{tagline: He didn't want law. │[B, A] │
│He wanted justice., title: Hof│ │
│fa, released: 1992} │ │
├──────────────────────────────┼────────────┤
Problem gelöst :)
I Ich bin mir nicht sicher, ob ich Ihr Problem richtig verstanden habe, aber versuchen Sie es mit dieser Frage. Es kann vorhandene Labels entfernen und das neue auf einmal anwenden. Ich nehme "NewLabel" als existierendes und "Person" & "Profession" als das neue, das gesetzt werden soll. Sie können Ihre eigenen Bedingungen beim Abgleich setzen. 'match (n) ENTFERNEN n: NewLabel SET n: Person: Beruf return n' – Gandalf
Wenn Sie nicht wissen, dass das vorhandene Label 'NewLabel' ist, wie entfernen Sie dann das Label? –