如何根据关系 属性 查找路径?
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
我是 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