postgresql 是否有办法通过AGE Viewer中的可变顶点数获得2个顶点之间的路径?

h9vpoimq  于 2023-03-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

ApacheAGE给出了通过可变数量的中间节点获得从一个顶点到另一个顶点的路径的方法。

(u)-[*3..5]->(v)

我在ApacheAGE中尝试了以下查询,它确实给予了所需的结果。

test=# SELECT * from cypher('cities', $$
MATCH p = (d:CITY {name:"Delhi"})-[:WAY_TO*..2]-(r:TOWN {name:"Rishikesh"})
RETURN relationships(p)
$$) as (a agtype);
                                                                                                                                              a                                                            
                                                                                  
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------
 [{"id": 1125899906842630, "label": "WAY_TO", "end_id": 844424930131980, "start_id": 844424930131977, "properties": {"distance": 2100}}::edge, {"id": 1125899906842640, "label": "WAY_TO", "end_id": 140737
4883553282, "start_id": 844424930131980, "properties": {"distance": 2300}}::edge]
 [{"id": 1125899906842629, "label": "WAY_TO", "end_id": 1407374883553282, "start_id": 844424930131977, "properties": {"distance": 230}}::edge]
 [{"id": 1125899906842628, "label": "WAY_TO", "end_id": 844424930131979, "start_id": 844424930131977, "properties": {"distance": 1500}}::edge, {"id": 1125899906842639, "label": "WAY_TO", "end_id": 140737
4883553282, "start_id": 844424930131979, "properties": {"distance": 1700}}::edge]
 [{"id": 1125899906842627, "label": "WAY_TO", "end_id": 1407374883553281, "start_id": 844424930131977, "properties": {"distance": 40}}::edge, {"id": 1125899906842637, "label": "WAY_TO", "end_id": 1407374
883553282, "start_id": 1407374883553281, "properties": {"distance": 211}}::edge]
 [{"id": 1125899906842626, "label": "WAY_TO", "end_id": 844424930131978, "start_id": 844424930131977, "properties": {"distance": 1400}}::edge, {"id": 1125899906842634, "label": "WAY_TO", "end_id": 140737
4883553282, "start_id": 844424930131978, "properties": {"distance": 1700}}::edge]
(5 rows)

但是,AGE查看器中的相同查询不会产生任何输出。

我意识到这可能是因为没有为中间节点声明agtype变量,但是,我想知道是否有一种变通方法可以获得所需的结果。

shyt4zoc

shyt4zoc1#

apache-age提供的函数relationships()返回一个包含路径中所有关系/边的列表。
所以你在return语句中使用relationships()函数:
RETURN relationships(p)
所以在这种情况下你会得到一个包含路径p中所有边的列表。
这就像获得所有边的完整细节,有id,起点,终点标签等,但实际上没有使用只绘制边。因此,他们不是在年龄查看器中绘制,但你可以简单地查看列表中的
部分,而不是图形部分。
要进一步了解relationship()函数,请参阅此处的文档

相关问题