2016-04-09 18 views
0

Ich habe verallgemeinerte Chiffre, die verschiedene Arten von Knoten zurückgibt, deren Eigenschaftsnamen variieren können, von denen ich einen Eigenschaftsnamen namens "Kennwort" ausschließen muss. Ich habe versucht, eine CASE-Anweisung in EXTRACT, FILTER und REDUCE zu verwenden, aber ich komme nirgendwohin.Neo4J - Alles vom Knoten zurückgeben, aber Eigenschaftsschlüssel

RETURN reduce(props = {}, x IN keys(stateNode) | 
    case when x <> "password" then 
     props + {x: stateNode[x]} 
    else 
     props + {"password": "changed"} 
    end 
) 

Dies wird offensichtlich nicht funktionieren, aber ich bin mir nicht sicher, wie es anders geht. Ich habe nicht den Luxus zu wissen, was die anderen Eigentumsnamen sind, so dass ich nicht jede Eigenschaft explizit zurückgeben kann, ausgenommen die Eigenschaft "password".

Antwort

0

Wenn es OK ist ein Array von Arrays zurück (wobei jedes innere Anordnung einen Schlüssel/Wert-Paar enthält), dann kann man so etwas wie folgt verwenden:

RETURN REDUCE(s = [], x IN keys(stateNode) | 
    s + [[x, (CASE WHEN x = "password" THEN "changed" ELSE stateNode[x] END)]] 
) AS props; 

Das Ergebnis wäre in etwa so aussehen:

[["name","Fred"],["age",22],["password","changed"]] 
+0

Ich denke, ich könnte damit arbeiten, danke! Gibt es also wirklich keine Möglichkeit, zwei Objekte in neo4j zusammenzuführen? Wenn Sie zufällig könnten, kann ich ein leeres Objekt deklarieren, einen dynamischen Eigenschaftsnamen mit Klammernotation und dessen Wert setzen und dieses Objekt dann mit dem Akkumulatorobjekt zusammenführen? – user5786662

+0

Ich habe das schon versucht und konnte keinen Weg finden. – cybersam

Verwandte Themen