我想在图形数据库(memgraph-db)中对自治系统及其关系进行建模
节点之间可以存在两种不同类型的关系:
- 无向对等关系(图像中没有箭头的边缘)
- 定向提供者2客户关系(箭头指向图像中的提供者)
下图显示了我想通过一些查询找到的有效路径
它们可以描述为
(s)-[:provider*0..n]->()-[:peer*0..n]—()<-[:provider*0..n]-(d)
或者换句话说
0-n c2p 边后跟 0-n p2p 边后跟 0-n p2c 边
我可以修复第一个和最后一个节点,并想找到一个(最短/最便宜的)路径。据我了解,如果路径上有一个关系,我可以做 BFS。
有没有办法在 Cypher 中查询这种形式的路径?
作为替代方案,我可以进行单独的查询,在其中指定每个段的长度,然后对每个路径长度进行查询,直到找到路径。
IE
MATCH (s)<-[]->(d) // All one hop paths
MATCH (s)-[:provider]->()-[:peer]-(d)
MATCH (s)-[:provider]->()<-[:provider]-(d)
...