2

我正在开发一些用于学习图形数据库的东西。我在以下部分中找到了查询的最短路径:

start n=node(5),m=node(45) match p=shortestPath(n-[*..1000]->m) return p,length(p)

但是我对此有疑问。该查询将返回最短路径并且不考虑 ROUTE 属性。我的意思是,如果存在相同的属性,我想获得具有关系的最短路径。

节点 A ==> :RELATION(ROUTE_ID=180) ==> 节点 B ==> :RELATION(ROUTE_ID=180) ==> 节点 C ==> :RELATION(ROUTE_ID=197)

当我调用正常的最短路径函数时,它通过随机属性为我提供关系。我也想关注属性。关键字是什么?如何解决该问题或如何改进该查询?

谢谢。

4

1 回答 1

3

如果所有具有 ROUTE_ID 属性的关系都具有特定的关系类型,例如“ROUTE”,那么您可以这样做:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[:ROUTE*..1000]->m)
RETURN p,length(p);

否则,您可以这样做:

START n=node(5), m=node(45)
MATCH p=shortestPath(n-[r*..1000]->m)
WHERE all(x IN r WHERE has(x.ROUTE_ID))
RETURN p,length(p);

前一种方法应该快得多。

于 2014-05-08T20:00:09.700 回答