Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 连接到起点和终点之间的时间线中的节点_Neo4j_Cypher - Fatal编程技术网

Neo4j 连接到起点和终点之间的时间线中的节点

Neo4j 连接到起点和终点之间的时间线中的节点,neo4j,cypher,Neo4j,Cypher,我创建了一个李约瑟时间树,一直到小时。 在每个小时节点上,我存储了历元时间 CREATE (h:Hour {hour: hour, day:day, month: month, year:year, time: apoc.date.parse(year +"-"+month+"-"+day+" "+hour+":00", "s", "yyyy-MM-dd hh:mm")}) 现在,我想在我的事件节点上链接每小时的开始时间和结束时间。 类似于 create (e:Event {startHour

我创建了一个李约瑟时间树,一直到小时。 在每个小时节点上,我存储了历元时间

CREATE (h:Hour {hour: hour, day:day, month: month, year:year, time: apoc.date.parse(year +"-"+month+"-"+day+" "+hour+":00", "s", "yyyy-MM-dd hh:mm")})
现在,我想在我的事件节点上链接每小时的开始时间和结束时间。 类似于

create (e:Event {startHour: <some unix time>, endHour: <some later unix time>})
with e
match (h:Hour) 
FOREACH (hour in range(startHour, endHour) |
    merge (e)-[:IN_HOUR]->(h))
显然,这是行不通的,因为开始时间和结束时间是大纪元,而不是实际的一小时

我确实有时间树中与[:NEXT]关系相关的小时数。我可以用它吗?

您可以这样做:

CREATE (e:Event {startHour: <some unix time>, endHour: <some later unix time>})
WITH e
MATCH (h:Hour)
USING INDEX h:Hour(time)
WHERE e.startHour <= h.time <= e.endHour
MERGE (e)-[:IN_HOUR]->(h);
USING INDEX子句给Cypher计划程序一个提示,它应该使用我假设您已经拥有的索引,例如:Hourtime

[已编辑]


即使startHour和endHour实际上不在一个小时内,这也会起作用。但是,如果您希望startHour被视为四舍五入到小时,那么WHERE子句可以使用e.startHour/3600*3600来代替e.startHour。

您知道我为什么会出现此错误吗:我在3.3.3 enterprise Neo.DatabaseError.Statement.ExecutionFailed:未能满足查询提示。无法解决这些提示:`使用索引h:Hourtime…您是否在:Hourtime上,h是否确实是您在匹配中使用的变量名?对两者都是。也尝试删除USING INDEX子句。它可以运行,但不确定是否有效。它跑得很慢。在实际查询中,我没有创建节点。我正在使用索引h:Hourtime匹配两个现有节点:match e:Events match h:Hour…您是否能够利用match e:Event子句上的索引功能?如果您有很多事件节点,您可能希望避免必须扫描所有节点才能找到所需的节点。你可能想更新你的问题,让它显示你实际上在尝试什么。我已经尝试了所有的组合。我使用的查询如下:MATCH e:VisitLocation MATCH h:Hour使用索引h:Hourtime WHERE e.startHour