Neo4J Cypher:为什么要将节点分配给shortestPath函数中所需的变量

时间:2017-11-14 03:47:55

标签: neo4j cypher graph-databases shortest-path

当我尝试在shortestPath()节点和Person节点之间执行Movie函数时,如 -

MATCH p=shortestPath((:Person)-[*1..4]->(:Movie))
RETURN length(p)

失败并显示错误 -

Neo.ClientError.Statement.SyntaxError
shortestPath(...) requires named nodes (line 1, column 9 (offset: 8))
"MATCH p=shortestPath((:Person)-[*1..4]->(:Movie))"
         ^

要解决此问题,我必须将节点标签分配给变量,如此 -

MATCH pt=shortestPath((p:Person)-[*1..4]->(m:Movie))
RETURN length(pt)

这会产生正确的回报 -

length(pt)
1
1
1
1
1
1
1
1
2
2
3

等等。

为什么需要这个?我在p子句中的任何位置都没有使用变量mRETURN

我无法在shortestPath()文档中找到解释。

1 个答案:

答案 0 :(得分:0)

我在周一的开放式密码会议期间向团队提出了问题,这就是答案:

  

不再需要这些变量。可能有过   在过去,检查仍然是遗留原因。这是公平的   功能请求。

干杯