【发布时间】:2015-11-24 21:09:08
【问题描述】:
我需要遍历属性“dependence”为“true”的边连接的所有顶点
这是我目前所拥有的:
SELECT
FROM (TRAVERSE *
FROM (SELECT outE() FROM 9:5)
WHILE (@class = 'E' AND dependence = 'yes') OR @class = 'V')
WHERE @class = 'V'
虽然我不确定是否是最好的方法,但这似乎只在边缘具有 'dependence' = 'yes' 的路径之后工作正常。
现在,可能会生成多个路径,我需要从每个路径/分支中获取最后一个顶点。
traverserdVertex(-1) 应该返回最后一个,但我猜这是来自整个遍历,所以不好。 (看起来有一个错误,因为它检索到多个)
外部 SELECT 返回整个顶点包,所以我在想也许可以找到那些没有输出边缘的顶点 dependence='yes'可能会解决它,虽然我不确定如何做得很好。
解决方案:
SELECT
FROM (TRAVERSE *
FROM (SELECT outE() FROM 9:5)
WHILE (@class = 'E' AND dependence = 'yes') OR @class = 'V')
WHERE @class = 'V' AND NOT (outE() contains (dependence='yes'))
这有效地返回了每个分支的最后一个顶点。我对任何其他选项持开放态度,我想知道是否可以改进。
【问题讨论】:
-
我认为您可以在 OrientDB Server 函数下用 Javascript 编写自己的函数,然后从 SQL 调用它。我试着写。
-
我刚刚找到了一个解决方案,但我对你的方法很好奇,我等着看 javascript 替代方案 :) 谢谢!
标签: orientdb