关系跃点的Neo4J nr需要明确设置。为什么?

时间:2015-07-26 21:10:10

标签: neo4j

我有以下NEO4J查询,它不会返回任何内容:

MATCH (:TimetreeRoot)-[:CHILD]->(year:Year)-[:CHILD]->(month:Month)-[:CHILD]->(day:Day)
WHERE year.value = 2016 AND month.value = 4 AND day.value = 26
MATCH (day)-[:CHILD]->(bhour:Hour)-[:CHILD]->(bminute:Minute)
WHERE bhour.value = 8 and bminute.value = 0
MATCH (day)-[:CHILD]->(ehour:Hour)-[:CHILD]->(eminute:Minute)
WHERE ehour.value = 18 AND eminute.value = 0
MATCH p=shortestPath((bminute)-[:NEXT*]->(eminute))
RETURN collect(NODES(p))

当差异较小时(比如12小时和18小时),即遍历的NEXT关系较少,它确实有效。

当我明确设置nr个跃点时,它也有效:

MATCH p=shortestPath((bminute)-[:NEXT*1..48]->(eminute))

所以我可以让它正常工作,但我的问题是:为什么我需要设置maxHops的nr?从手册:

  

minHops和maxHops是可选的,默认分别为1和无穷大   http://neo4j.com/docs/stable/query-match.html#match-variable-length-relationships

它不一定是大问题,因为我确实弄明白了如何让它发挥作用。但是,我想了解造成这个问题的原因。

1 个答案:

答案 0 :(得分:3)

shortestPath的默认最大跳数为15跳。如果您想要超出此默认值,则需要指定它。

来自documentatio n:

  

在两个节点之间找到一条最短路径,只要路径长度最多为15个