【问题标题】:Select paths from traversal and filter on the destination vertex (OrientDB)从遍历中选择路径并在目标顶点上过滤(OrientDB)
【发布时间】:2015-07-27 19:42:24
【问题描述】:

我是图形数据库和 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]
   ]
}

感谢您的帮助。

【问题讨论】:

  • 我回答你的问题了吗?
  • 这是我的查询已经完成的。没有其他路径以 #9:15 作为目标,从 #9:2 开始。
  • 谢谢,我明白了。

标签: graph orientdb shortest-path graph-traversal


【解决方案1】:

首先,$path 是当前路径的字符串表示。 其次,您可以在外部查询的 where 子句中过滤目标列。试试这个:

SELECT 
   $path 
FROM 
   ( TRAVERSE 
        out() 
     FROM 
        #9:2 
     WHILE 
        $depth <= 10 ) 
WHERE 
   @rid = #9:15

我得到以下输出:

这就是你要找的吗?

如果我不添加 where 子句,我会得到以下输出:

【讨论】:

  • 这有助于我理解路径。我没有得到的是如何获得多条路径。我已经编辑了我的问题
  • 我的查询语法将允许您获取多条路径,但遍历只有一条到达指定目的地的路径
  • 我已经回答了您最初的问题,所以请您将我的回答标记为正确,如果您认为其他问题不同,请再发一篇帖子...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
相关资源
最近更新 更多