2017-05-17 1 views
0

Ich habe folgenden:Wie verwende ich Chiffre, um den Zeitbereich für neo4j-Knoten abzufragen?

@neo.execute_query("match (node) where node.value = 'Rachel' return node.uuid, node.epoch_utc_i, node.value") 

=> {"columns"=>["node.uuid", "node.epoch_utc_i", "node.value"], "data"=>[["87f7d4c7-c161-4ba2-bce6-8c3c5104f60c", 1493774726, "Rachel"], ["23574509-3d67-4783-a00a-66a2b49b5cbd", 1493968856, "Rachel"], ["e7f01367-baa6-431b-8760-1979c215d777", 1494035989, "Rachel"], ["4cc0f450-a1c4-4992-85c1-9bcb4d759d6a", 1494047641, "Rachel"], ["e3a83a43-3b0f-4a7f-944b-4f582fb47b72", 1494183024, "Rachel"], ["1d8be261-e788-449c-9fa1-9db82816fa37", 1494531971, "Rachel"]]} 

Aber ich bin nicht in der Lage WHERE zu verwenden nur die mit der epoch_utc_i Zeit zwischen Heute und Gestern zum Beispiel zurückzukehren:

2.2.1 :045 > yesterday = Chronic.parse('1 day ago').to_i 
=> 1494906466 

2.2.1 :046 > @neo.execute_query("match (node) where node.value Contains 'Rachel' AND node.epoch_utc_i > yesterday return node.uuid, node.epoch_utc_i, node.value") 
Neography::SyntaxException: NeographyError: 
--message: Variable `yesterday` not defined (line 1, column 72 (offset: 71)) 

Edit: versuchte vorbei der Wert in der Abfrage

@neo.execute_query("match (node)-[:gratefulFor]->(node2) where node.bot_client_id = 'aiaas-1409611358153-user-0149' AND node2.epoch_utc_i > $yesterday return node.bot_client_id, node2.epoch_utc_i, node2.value", {:yesterday => yesterday}) 

Neography::SyntaxException: NeographyError: 
--message: Variable `$yesterday` not defined (line 1, column 121 (offset: 120)) 

--request: {:path=>"/db/data/cypher", :body=>"{\"query\":\"match (node)-[:gratefulFor]->(node2) where node.bot_client_id = 'aiaas-1409611358153-user-0149' AND node2.epoch_utc_i > $yesterday return node.bot_client_id, node2.epoch_utc_i, node2.value\",\"params\":{\"yesterday\":1494908349}}"}, 

Frage:

Wie konnte ich erreichen, wie ich in meinem Code oben, nur jene Knoten beabsichtigte, wo die epoch Zeit größer ist als die epoch Zeit für gestern?

Antwort

0

Sie müssten die Variable an die Abfrage übergeben. Parameter werden an Cypher-Abfragen über $yesterday oder {yesterday} (alte Schreibweise) übergeben. Die Abfrage wird wie folgt sein:

Die Abfrageausführung wird die gestrige Variable übergeben und in die obige Abfrage interpoliert.

@neo.execute_query(query, {:yesterday => yesterday}) 
+0

ah ......... okay, ich denke ich sehe, lass mich versuchen, danke! – Angela

+0

Es hat nicht funktioniert: @ neo.execute_query ("übereinstimmen (Knoten) - [: dankbarFor -> (node2) wo Node.bot_client_id = 'aiaas-1409611358153-user-0149' UND node2.epoch_utc_i> $ Gestern zurück Knoten .bot_client_id, node2.epoch_utc_i, node2.value ", {: gestern => gestern}) Neography :: SyntaxException: NeographyError: --meldung: Variable' $ gestern' nicht definiert (Zeile 1, Spalte 121 (Offset: 120)) – Angela

+0

Versuchen Sie mit der '{gestern}' Syntax als '$ gestern' ist ziemlich neuer Notation. –

Verwandte Themen