orientdb - 如何在不遍历的情况下过滤子顶点
orientdb - How to filter child vertexes without traverse
我有 class State
从 V
扩展而来,State
的记录与 E
连接成图表。我还有带 rid 的变量:$current
。如何从 $current
select 其他传出 State
并使用 WHERE
?
过滤它们
我知道如何使用 TRAVERSE
实现,但是没有它是否可以实现?
SELECT EXPAND(out()) FROM (TRAVERSE out() FROM $current MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
这个呢?
select expand(out()) from $current where out().keys IN ['a', 'b', 'c']
编辑
通过前面的查询,我得到了这些对我来说听起来有点不正确的结果
而不是我写的这个看起来更正确:
select from (select expand(out()) from $current) where keys IN ['a', 'b', 'c']
如果这对您有帮助,请告诉我。伊万
我试过这个与@Ivan Mainetti 非常相似的例子
这是我的图表
根据你的查询我得到了这个结果
节点12:0是键为"a"的节点
使用 TRAVERSE out() FROM 12:0 MAXDEPTH 1
你得到状态 "a","b","d"
与select FROM (TRAVERSE out() FROM 12:0 MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
您将从状态 'a'、'b'、'd' 开始,这些状态在输出中至少与以下状态之一相连 'a' , 'b' 和 'c'。
您将获得连接到 "b" 的状态 "a" 和连接到 "c".
的状态 "b"
与select expand(out())FROM (TRAVERSE out() FROM 12:0 MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
您将在输出中获得连接到 "a" 和 "b" 的状态,即 b、d、c 和 e。
如果你想在不使用 "traverse" 的情况下执行此操作,你可以使用
select expand(out()) from (
select expand($c)
let $a=(select from 12:0),
$b=(select expand(out()) from $a),
$c=unionAll($a,$b)
) where out().keys IN ['a', 'b', 'c']
希望对您有所帮助。
我有 class State
从 V
扩展而来,State
的记录与 E
连接成图表。我还有带 rid 的变量:$current
。如何从 $current
select 其他传出 State
并使用 WHERE
?
我知道如何使用 TRAVERSE
实现,但是没有它是否可以实现?
SELECT EXPAND(out()) FROM (TRAVERSE out() FROM $current MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
这个呢?
select expand(out()) from $current where out().keys IN ['a', 'b', 'c']
编辑
通过前面的查询,我得到了这些对我来说听起来有点不正确的结果
而不是我写的这个看起来更正确:
select from (select expand(out()) from $current) where keys IN ['a', 'b', 'c']
如果这对您有帮助,请告诉我。伊万
我试过这个与@Ivan Mainetti 非常相似的例子
这是我的图表
根据你的查询我得到了这个结果
节点12:0是键为"a"的节点
使用 TRAVERSE out() FROM 12:0 MAXDEPTH 1
你得到状态 "a","b","d"
与select FROM (TRAVERSE out() FROM 12:0 MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
您将从状态 'a'、'b'、'd' 开始,这些状态在输出中至少与以下状态之一相连 'a' , 'b' 和 'c'。 您将获得连接到 "b" 的状态 "a" 和连接到 "c".
的状态 "b"与select expand(out())FROM (TRAVERSE out() FROM 12:0 MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
您将在输出中获得连接到 "a" 和 "b" 的状态,即 b、d、c 和 e。
如果你想在不使用 "traverse" 的情况下执行此操作,你可以使用
select expand(out()) from (
select expand($c)
let $a=(select from 12:0),
$b=(select expand(out()) from $a),
$c=unionAll($a,$b)
) where out().keys IN ['a', 'b', 'c']
希望对您有所帮助。