2014-01-15 16 views
11

Ich habe eine Eigenschaft quantity auf unsere-Knoten und bin auf der Suche nach einer Abfrage cipher, die mir alle Knoten mit quantity = 20 ... Problem ist, dass die Menge als eine Zeichenfolge in Neo4j gespeichert ist. Gibt es eine Möglichkeit, die Eigenschaft in der Chiffreabfrage in Ganzzahl zu konvertieren?Neo4J Cypher Datentyp Konvertierung

// This fails to find the required nodes 
MATCH (p:Product) WHERE p.quantity = 20; 

// This finds them 
MATCH (p:Product) WHERE p.quantity = "20"; 

// I would like to do this 
MATCH (p:Product) WHERE INT(p.quantity) = 20; 

PS: Dies ist ein wirklich vereinfacht usecase, wir haben nicht wirklich Produkte und Mengen, sondern nur mit den bestehenden Neo4j Daten konfrontiert, die als Strings gespeichert Integer-Werte hat, und wir möchten einige Spiele tun auf diesen Saiten

Antwort

9

Sie können es anders herum tun.

MATCH (p:Product) WHERE p.quantity = str(20) RETURN p; 

sollte auch mit Params arbeiten.

MATCH (p:Product) WHERE p.quantity = str({quantity}) RETURN p; 

oder sogar mit Inline-Eigenschaft übereinstimmt

MATCH (p:Product {quantity : str({quantity})}) RETURN p; 
+1

Noch keine Möglichkeit, in Ganzzahl zu konvertieren? –

+2

Ah, hier ist es: http://docs.neo4j.org/chunked/stable/query-functions-scalar.html#functions-toint –

+0

Sieht aus wie 'str' in' toString' umbenannt wurde, siehe [ relevante aktuelle (3.x) Dokumentation] (http://neo4j.com/docs/developer-manual/current/#functions-tostring). –

0

Ich habe auch schon früher mit diesem Problem konfrontiert. Soweit ich herausgefunden habe, war es nicht möglich, diese Umwandlung direkt in der Chiffre durchzuführen. Ich benutzte ein kleines Java-Skript (mit der Standard-Java-API), um die Datentypen der gespeicherten Werte zu ändern. Das ist ein paar Monate her, also könnte es sich mit der Version 2.0 geändert haben.

+0

Ja, ich die Google-Gruppen Diskussion gesehen habe, aber hatte gehofft, etwas 2,0 in Neo4j verändert hatte ... Ich habe nichts gefunden in der Dokumentation tho. – ChrisR

7
MATCH (p:Product) WHERE toInt(p.quantity) = 20; 
+1

Es ist immer eine gute Idee, einen Text in Ihre Antwort zu schreiben, um zu erklären, was Sie tun. Lesen Sie [wie Sie eine gute Antwort schreiben] (http://stackoverflow.com/help/how-to-answer). – jurgemaister