如何根据关系 属性 查找路径?

How to find Paths based on a Relationship property ?

我是 Neo4J 的新手,已经 3 天了,我一直在努力弄清楚如何在 2 个房间之间找到路径。

函数 allShortestPaths() 得到这样的结果 http://www.directupload.net/file/d/3948/79bvpbzd_jpg.htm 或者像这样 http://www.directupload.net/file/d/3948/56j6plhh_jpg.htm
抱歉,我的声誉不允许我直接包含图片)。

此函数开箱即用,但使用各种关系从头到尾遍历。但是,如果我只想获得与某个 属性 有关系的路径怎么办?

路径可能如下所示:(start:Room {name: "x"})-[*]-("another node")-[*]-("other node)-[:CONNECTED_TO {state: "free}]-("another node")-[*]-(end:Room {name: "y"}

我所知道的通缉路径是:

我不知道和不重要的是:

下一步将是更精确地指定我正在寻找的路径,例如通过该路径中节点的属性。
即从 (A) to (H), where (C {type: "SC"})-[:CONNECTED_TO {state: "free"}]-(D {type: "SC"})

找到一条路径

我已经阅读了很多正确的知识并尝试了上百万种不同的密码,但是我阅读的越多,尝试的越多,我就越困惑。任何人都可以给我提示吗?

提前致谢

Ichnafi

What i know about wanted path is:

  • start node
  • end node
  • property and label of a relationship somewhere within the path

您正在寻找的是 ANY 谓词,它测试谓词是否至少适用于集合中的一个元素。在你的例子中,集合是路径中的所有关系

一个简单的查询是:

MATCH (start:Room {name:'x'}), (end:Room {name:'y'})
MATCH p=allShortestPaths((start)-[*]-(end))
WHERE ANY(
       x IN rels(p) WHERE type(x) = 'RELATIONSHIP_TYPE' 
                    AND x.prop = propValue )
RETURN distinct(p)

文档中有更多内容:http://neo4j.com/docs/stable/query-predicates.html#functions-single