我希望能够从OrientDB遍历查询中排除某些顶点。
例如,
traverse * from (select from Location where ID = '1234')
将遍历起点处的所有顶点类。我需要一种方法来为特定的类添加排除。
我知道如果我不使用*
运算符而是指定我想要的所有类,这是可能的。但是,它不合适,因为我的程序甚至都不会知道。数据不断变化,但要排除的类将始终存在。
答案 0 :(得分:2)
我不知道我是否理解正确。
我有这种结构。
我想从节点A1开始遍历,不包括B类节点和相关分支。
我使用此查询
traverse * from #12:0 while @class<>"B"
希望它有所帮助。
<强>更新强>
我使用此查询
select * from (traverse * from #12:0 while @class<>"B") where @class<>"E" or (@class="E" and in.@class<>"B")
更新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,但它应该工作
再见,伊万