2013-07-18 6 views
16

Ich verstehe es möglich ist, das Wildcard-Symbol (*) zu verwenden, um alle Referenzen in einer Cypher Abfrage zurückzukehren, wie zum Beispiel:Wie kann ich alle Eigenschaften für einen Knoten mit Cypher zurückgeben?

MATCH p:Product WHERE p.price='1950' RETURN *; 

    ==> +----------------------------------------------------------------+ 
    ==> | p                | 
    ==> +----------------------------------------------------------------+ 
    ==> | Node[686]{title:"Giorgio Armani Briefcase",price:"1950",... | 
    ==> +----------------------------------------------------------------+ 

jedoch das Ergebnis ist eine Reihe mit einem einzelnen Knoten ‚Spalte‘ Namen " p ", von dem aus auf die Eigenschaften zugegriffen werden kann. Ich möchte jedoch, dass die Zeilen der Ergebnismenge die Eigenschaftennamen als Spalten haben. Etwas wie:

MATCH p:Product WHERE p.price='1950' RETURN p.*; 

    ==> +-------------------------------------------+ 
    ==> | title | price | ...      | 
    ==> +-------------------------------------------+ 
    ==> | "Giorgio Armani Briefcase" | "1950" | ... | 
    ==> +-------------------------------------------+ 

Diese besondere Abfrage nicht gültig ist, aber ist es eine Möglichkeit, um das gleiche Ergebnis (kurz von dem alle Eigenschaften explizit zu erreichen, wie in p.title, T.PREIS, p .. .)

Antwort

20

Sie können dies noch in Cypher nicht. Ich denke, es wäre ein nettes Feature, wenn Sie es wünschen.

bearbeiten (Danke für einen Kommentar Hinweis it out): Sie können dies jetzt tun, wie von 2,2:

MATCH (p:Product) WHERE p.price='1950' RETURN keys(p); 
+0

Hat bereits jemand diese Funktion angefordert? –

+1

Sieht so aus: https://github.com/neo4j/neo4j/issues/164 und https://trello.com/c/FciCdgWl –

+3

Sie können eine Sammlung von Schlüsseln mit der in 2.2 eingeführten 'keys' Funktion erhalten Es gibt keine Möglichkeit, mit einem dynamischen Stringschlüssel auf eine Eigenschaft zuzugreifen, wie hier gefragt :(http://stackoverflow.com/questions/29996741/how-to-access-and-mutate-node-property-value-by-the-property -name-string-in-cyph –

2

Sie können die 'as' -Klausel verwenden und jede Eigenschaft und den Namen der Spalte angeben. Sie müssen jedoch jede Eigenschaft identifizieren, die Sie einzeln zurückgeben möchten.

ex:

MATCH p.product where WHERE p.price='1950' RETURN p.price as price, p.title as title, p.whatever, as anythingYouWant 
+2

Danke für den Tipp. Wie es passiert, wird mein Code generiert, so dass der Generator die Eigenschaftsnamen statisch kennt und ich habe es so etwas generieren lassen - obwohl 'p.price? als Preis für "Nullable" (fehlende) Eigenschaften. – DavidJ

-2

Ich bin neu in Chiffre, aber es scheint, dass dies alle Schlüssel zurückgibt für eine bestimmte Art von Knoten:

MATCH (p:product) RETURN keys(p) 

Funktioniert in Neo4J 3.0.

6

einfach auf immer die Schlüssel zu erweitern:

MATCH (p:product) WITH DISTINCT keys(p) AS keys 
UNWIND keys AS keyslisting WITH DISTINCT keyslisting AS allfields 
RETURN allfields; 
7

In der neuesten Version von Cypher properties(n) zurückkehren alle Schlüssel und Eigenschaften eines Knotens. Scheint aber nur für einen einzelnen Knoten zu funktionieren.

Ich hoffe, das hilft den Menschen.

2

Sie können n in Ihrer Abfrage zurückgeben, es werden alle Schlüssel und Eigenschaften eines Knotens zurückgegeben. zB .: MATCH (n:People) n
Dieser kehrt
n:
{ "Date_of_Birth": "1981-04-23 00:00:00", "Employee_Last_Name": "Aaaa", "Employee_First_Name": "Baaa", "Age": 36, "Employee_Status": "Active" }

Verwandte Themen