OrientDB从遍历

时间:2016-05-17 11:37:58

标签: orientdb

我希望能够从OrientDB遍历查询中排除某些顶点。

例如,

traverse * from (select from Location where ID = '1234')

将遍历起点处的所有顶点类。我需要一种方法来为特定的类添加排除。

我知道如果我不使用*运算符而是指定我想要的所有类,这是可能的。但是,它不合适,因为我的程序甚至都不会知道。数据不断变化,但要排除的类将始终存在。

2 个答案:

答案 0 :(得分:2)

我不知道我是否理解正确。

我有这种结构。

enter image description here

我想从节点A1开始遍历,不包括B类节点和相关分支。

我使用此查询

traverse * from #12:0 while @class<>"B"

enter image description here

希望它有所帮助。

<强>更新

我使用此查询

select * from (traverse * from #12:0 while @class<>"B") where @class<>"E" or (@class="E" and in.@class<>"B")

enter image description here

更新2

select * from (traverse * from #12:0 while @class<>"B") where @this instanceof 'V' or (@this instanceof 'E' and in.@class<>"B")

答案 1 :(得分:0)

您可以使用difference()功能

来完成此操作
select expand($c)
let $a=traverse * from (select from Location where ID = '1234')
$b=select from <class to exclude>
$c=difference($a,$b)

不确定synthax,但它应该工作

再见,伊万