两个密码查询之间的区别

difference between two cypher queries

我正在尝试 运行 这两个密码查询,但我不理解它们之间的区别。这里的目的是在给定的两个节点之间找到多条路径,使得该路径中 transit_time 的总和按升序排列。

第一季度:

MATCH p =(:`ml`  { placeId: 960 })-[:ETA*0..10]->(:`ml`  { placeId: 814 })
return p, p as allshortestPaths, 
REDUCE(time=0, r in relationships(p) | time+r.transit_time) AS totalTime 
ORDER BY totalTime ASC

Q2 :

MATCH (from:`ml` { placeId: 960}), (to: `ml` {placeId: 814}) , 
paths = allShortestPaths((from)-[:ETA*]->(to)) 
WITH REDUCE(time = 0, rel in rels(paths) | time + rel.transit_time) 
AS totalTime, paths 
RETURN (totalTime) 
ORDER BY totalTime ASC

在这方面,我从 Q1 中获得了最好的结果,而且这些操作需要很长时间。 还有其他更好的方法可以使用图形算法吗?我认为可以使用 Dijkstra 算法来执行此操作,任何有关如何在那里指定 cost_parameter 以及如何使用的帮助都会很棒。 我正在使用 py2neo 和 neo4j。

Neo4j 有一个 integrated tool to explain queries,实际上它不是解释而是分析。

您还可以找到here一些关于执行计划的文档,解释每个操作。

具有复杂查询的执行计划示例:

source