Database orientdb-如何在没有遍历的情况下过滤子顶点
I从Database orientdb-如何在没有遍历的情况下过滤子顶点,database,orientdb,graph-databases,Database,Orientdb,Graph Databases,I从V扩展为类状态,将状态的记录连接到带有E的图形中。我还有一个rid变量:$current。如何从$current中选择其他传出状态,并使用WHERE对其进行过滤 我知道如何使用遍历实现if,但不使用它是否可以实现if SELECT EXPAND(out()) FROM (TRAVERSE out() FROM $current MAXDEPTH 1) WHERE out().keys IN ['a', 'b', 'c'] 这个怎么样 select expand(out()) from $c
V
扩展为类状态
,将状态
的记录连接到带有E
的图形中。我还有一个rid变量:$current
。如何从$current
中选择其他传出状态
,并使用WHERE
对其进行过滤
我知道如何使用遍历实现if,但不使用它是否可以实现if
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']
导致:
如果这对你有帮助,请告诉我。伊万这个怎么样
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我尝试了这个与@Ivan Mainetti非常相似的例子
这是我的图表
通过你的查询,我得到了这个结果
节点12:0是键为“a”的节点
使用从12:0 MAXDEPTH 1开始的Travelout()
可以得到状态“a”、“b”、“d”
使用select FROM(从12:0 MAXDEPTH 1开始遍历out())WHERE out()。键入['a','b','c']
您将从状态“a”、“b”、“d”开始,这些状态在输出中至少与以下状态“a”、“b”和“c”之一连接。
您将获得连接到“b”的状态“a”,以及连接到“c”的状态“b”
使用选择expand(out())FROM(TRAVERSE out()FROM 12:0 MAXDEPTH 1)WHERE out()。在['a','b','c']中键入键。
您将在输出中获得连接到“a”和“b”的状态,即b、d、c和e
如果您想在不使用“遍历”的情况下执行此操作,可以使用
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']
希望能有所帮助。我已经尝试了这个与@Ivan Mainetti非常相似的例子
这是我的图表
通过你的查询,我得到了这个结果
节点12:0是键为“a”的节点
使用从12:0 MAXDEPTH 1开始的Travelout()
可以得到状态“a”、“b”、“d”
使用select FROM(从12:0 MAXDEPTH 1开始遍历out())WHERE out()。键入['a','b','c']
您将从状态“a”、“b”、“d”开始,这些状态在输出中至少与以下状态“a”、“b”和“c”之一连接。
您将获得连接到“b”的状态“a”,以及连接到“c”的状态“b”
使用选择expand(out())FROM(TRAVERSE out()FROM 12:0 MAXDEPTH 1)WHERE out()。在['a','b','c']中键入键。
您将在输出中获得连接到“a”和“b”的状态,即b、d、c和e
如果您想在不使用“遍历”的情况下执行此操作,可以使用
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']
希望有帮助。在WHERE
案例中使用out().keys
inWHERE
是否正常?事实上,我认为它工作不正常,我将更新我的答案。谢谢!这就是我要找的。在WHERE
的情况下使用out().keys
是正常的做法吗?事实上我认为它工作不正常,我要更新我的答案。谢谢!这就是我要找的。let的好解决方案。let的好解决方案。