Select 目标顶点遍历和过滤的路径(OrientDB)
Select paths from traversal and filter on the destination vertex (OrientDB)
我是图形数据库和 OrientDB 的新手,感谢您的耐心等待。
我有以下 SQL 查询来为两个顶点之间的 最短 路径生成一组扩展结果(我正在使用 GratefulDeadConcerts 数据库):
select expand(sp) from (select shortestPath(#9:2,#9:15,'BOTH') as sp)
无论出于何种原因,使用不带别名的扩展不会产生任何结果,但这并不是真正的问题。
我要的不是最短路径,而是潜在路径和分支的集合
我试过使用 travesedVertex:
SELECT traversedVertex(-1) FROM ( TRAVERSE out() FROM #9:2 WHILE $depth <= 10 )
但我不知道如何设置目的地,或者(老实说)如何解释我得到的结果。
编辑
如果从 A 到 B 有多种方式,我希望每条路径都作为一个集合返回,例如:
{
paths: [
[#9:2, #4:16, #8:7, #9:15],
[#9:2, #4:2, #16:5, #11:3, #9:15],
[#9:2, #4:4, #11:6, #9:15]
]
}
感谢您的帮助。
首先,$path是当前路径的字符串表示。
其次,您可以在外部查询的 where 子句上过滤目标列。试试这个:
SELECT
$path
FROM
( TRAVERSE
out()
FROM
#9:2
WHILE
$depth <= 10 )
WHERE
@rid = #9:15
我得到以下输出:
这是您要找的吗?
如果我不添加 where 子句,我会得到以下输出:
我是图形数据库和 OrientDB 的新手,感谢您的耐心等待。
我有以下 SQL 查询来为两个顶点之间的 最短 路径生成一组扩展结果(我正在使用 GratefulDeadConcerts 数据库):
select expand(sp) from (select shortestPath(#9:2,#9:15,'BOTH') as sp)
无论出于何种原因,使用不带别名的扩展不会产生任何结果,但这并不是真正的问题。
我要的不是最短路径,而是潜在路径和分支的集合
我试过使用 travesedVertex:
SELECT traversedVertex(-1) FROM ( TRAVERSE out() FROM #9:2 WHILE $depth <= 10 )
但我不知道如何设置目的地,或者(老实说)如何解释我得到的结果。
编辑 如果从 A 到 B 有多种方式,我希望每条路径都作为一个集合返回,例如:
{
paths: [
[#9:2, #4:16, #8:7, #9:15],
[#9:2, #4:2, #16:5, #11:3, #9:15],
[#9:2, #4:4, #11:6, #9:15]
]
}
感谢您的帮助。
首先,$path是当前路径的字符串表示。 其次,您可以在外部查询的 where 子句上过滤目标列。试试这个:
SELECT
$path
FROM
( TRAVERSE
out()
FROM
#9:2
WHILE
$depth <= 10 )
WHERE
@rid = #9:15
我得到以下输出:
这是您要找的吗?
如果我不添加 where 子句,我会得到以下输出: