Neo4j图数据库与属性的关系

时间:2014-05-08 16:20:51

标签: database neo4j shortest-path graph-traversal

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

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)==> NODE C ==> :关系式(ROUTE_ID = 197)

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

感谢。

1 个答案:

答案 0 :(得分: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);

前一种方法应该快得多。