neo4j desktop 1.2.3 , trying the following query in the browser
The graph represents the call history between two persons and the relationship CALLED has property timestamp. This property is a list of timestamps.
The below code gives the shortest path, irrespective of the timestamp
MATCH (ms:Person { name: 'Martin Sheen' }),(cs:Person { name: 'Charlie Sheen' }), p = shortestPath((ms)-[:CALLED*]-(cs))
WITH p
WHERE length(p)> 1
RETURN p
I want to know the shortest path after time t1 or between time t1 and t2. I am not able to filter list properties using the Cypher query. But the below query doesn't work.
MATCH (ms:Person { name: 'Martin Sheen' }),(cs:Person { name: 'Charlie Sheen' }), p = shortestPath((ms)-[r:CALLED*]-(cs))
WITH p, r as relationships(p)
WHERE length(p)> 1 and all(r IN relationships(p) WHERE (time in r WHERE time > datetime({year:2019,month:3,day:31})))
RETURN p
The relationship CALLED has properties as list I am unable to loop through using two WHERE and check each timestamp.
...
relationshipQuery:'MATCH (p1:Node)-[re:IS_NEIGHBOR]->(p2:Node) where r IN re.timestamp WHERE time in r WHERE time > datetime({year:2019,month:3,day:31}) RETURN id(p1) as source, id(p2) as target',
...
Not sure if I am doing the right thing here.
Thanks @shan
Thank you Shan. It works but for other who might have similar question while comparing timestamps make sure both the timestamps are in same format
One more step before the final solutions.
How can get the graph to show or json results, I am able to get the Node ids using stream
I looked at the docs and tried to find in forum, but I could not find any.