Neo4j:如何在给定日期范围内按中间日期查询

时间:2015-07-18 23:07:28

标签: time neo4j cypher spring-data-neo4j

Neo4J TimeTree是一种在图表中建模时间的有效方法。但是,我对如何以定义的开始和结束时间建模/查询对象感兴趣。

例如,票证可能有效且从有效日期开始,可能会隔开很多天。用户可能有很多门票。

对于给定日期,查询有效门票的最有效方法是什么?

输入数据时,我想我可以在故障单和开始和结束之间的中间天数之间创建许多validOn关系,但这似乎效率低下。谁能想到更好的查询数据的方法呢?

我可以从用户开始查找该validRrom为< =且validTo为> =日期的用户的所有票证。但是,如果我需要从约会开始会发生什么?即匹配在给定日期有效的所有门票?

1 个答案:

答案 0 :(得分:1)

您只能将故障单链接到具有专用关系的validFrom和validTo日期。

对于任何指定日期,您向后查询在该日期之前具有:START关系但在该日期之后具有:END关系的故障单,如下所示:

MATCH path = (t:Ticket)-[:START]->(before:Day)-[:NEXT*0..30]->(day:Day {date:{date}})
WHERE (t)-[:END]->(:Day)<-[:NEXT*1..30]-(day)
RETURN t