Wie kann der Knoteneigenschaftswert über die Zeichenfolge des Eigenschaftsnamens in Cypher aufgerufen und geändert werden?

9

Mein Ziel ist für den Zugriff und die Mutation einer Eigenschaft eines Knotens in einer Abfrage , wobei der Name der Eigenschaft, auf die zugegriffen werden soll und mutiert ist, ein unbekannter Zeichenfolgewert ist.

Zum Beispiel , bedenken Sie einen Befehl:

  

Suchen Sie alle Knoten, die zwei Eigenschaften enthalten, so dass der Name der ersten Eigenschaft in Kleinbuchstaben und der Name der Letzteren in Großbuchstaben dargestellt wird. Dann , propagieren Sie den Wert der Eigenschaft mit dem Kleinbuchstaben-String-Namen auf den Wert der Eigenschaft mit dem Großbuchstaben-Namen.

Der besondere Fall ist einfach:

%Vor%

Aber ich kann keinen Weg finden, den allgemeinen Fall in einer einzigen Anfrage zu implementieren.

Insbesondere kann ich nicht:

  1. Greifen Sie auf die Eigenschaft des Knotens mit einer Zeichenfolge und einem Wert
  2. zu
  3. Mutieren Sie die Eigenschaft des Knotens mit einer Zeichenfolge und einem Wert

Aus Gründen der Klarheit werde ich meinen Versuch, den allgemeinen Fall zu behandeln, einbeziehen. Wo ich die Eigenschaft des Knotens nicht ändern konnte, konnte ich die Chiffre für einen Befehl generieren, der mein Endziel erreichen würde, wenn es in einer nachfolgenden Transaktion ausgeführt würde.

%Vor%

Nachträglich: Es scheint, als ob die Fähigkeit, eine Knoteneigenschaft nach Eigenschaftsnamen zu mutieren, eine ziemlich häufige Anforderung ist, aber das Fehlen einer offensichtlichen Unterstützung für das Merkmal führt zu der Annahme, dass das Merkmal weggelassen wurde bewusst? Wenn diese Funktion tatsächlich nicht unterstützt wird, gibt es eine Dokumentation, die erklärt, warum und ob es einen Konflikt zwischen dem Ansatz und der empfohlenen Vorgehensweise in Neo / Cypher gibt?

    
smartcaveman 01.05.2015, 23:53
quelle

2 Antworten

0

Es scheint, dass das gewünschte Sprachfeature in Neo4j 2.3.0 unter dem Namen "dynamic property" zu Cypher hinzugefügt wurde. Die Cypher-Dokumente aus Version 2.3.0-up deklarieren die folgende Syntaxgruppe als gültigen Chiffreausdruck:

  

Eine dynamische Eigenschaft: n["prop"] , rel[n.city + n.zip] , map[coll[0]] .

Diese Funktion ist für 2.3.0 dokumentiert, fehlt jedoch in Vorherige Version (2.2.9) .

Danke Neo4j Team!

    
smartcaveman 03.05.2016, 08:50
quelle
3

Es gibt eine Diskussion über eine verbesserte Unterstützung für den Zugriff auf dynamische Eigenschaften in Cypher. Ich bin ziemlich zuversichtlich, dass wir in Zukunft Unterstützung dafür sehen werden, aber ich kann weder eine Zielversion noch ein Datum kommentieren.

Als Workaround würde ich empfehlen, dies in eine nicht verwaltete Erweiterung zu implementieren.

    
Stefan Armbruster 02.05.2015 09:37
quelle