I have the following:
@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"]]}
However, I am unable to use WHERE
to return only those with the epoch_utc_i
time between Today and Yesterday, for example:
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: tried passing the value into the query
@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}}"},
Question:
How could I achieve as I intended in my code above, only those nodes where the epoch time is greater than the epoch time for yesterday?
You would have to pass the variable to the query. Parameters are passed to Cypher queries using $yesterday
or {yesterday}
(old notation). The query will be as follows:
MATCH (node) WHERE node.value
CONTAINS 'Rachel' AND node.epoch_utc_i > {yesterday}
RETURN node.uuid, node.epoch_utc_i, node.value"
The query execution will be passed the yesterday variable and interpolated into the query above.
@neo.execute_query(query, {:yesterday => yesterday})