我从State
扩展了V
个课程,将State
的记录与E
连接到图表中。我也有变量rid:$current
。如何从State
中选择其他传出$current
并使用WHERE
过滤它们?
我知道如何使用TRAVERSE
实现,但如果没有它可以实现吗?
SELECT EXPAND(out()) FROM (TRAVERSE out() FROM $current MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c']
答案 0 :(得分:2)
这是怎么回事?
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']
导致:
如果这有助于您,请告诉我。伊万
答案 1 :(得分:2)
我尝试过这个与@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']
你会得到输出中连接的状态为b,d,c和e的“a”和“b”。
如果您想在不使用“遍历”的情况下执行此操作,可以使用
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']
希望它有所帮助。