如何在 OrientDB 中合并两个查询的结果

How to merge results of two queries in OrientDB

假设我有 4 个顶点 类:V1、V2、V3、V4 还有 3 边 类: E1,E2,E3

然后它们的实例(可能)像这样连接:

V1 --E1--> V2
V2 --E2--> V3
V2 --E3--> V4
V3 --E3--> V4

所以,从图形上看是这样的:

V1---E1---V2
          |   \
          E2    E3
          |        \
          V3---E3---V4

按照上面显示的方向。

我现在对从 V1 到 V4 显示的确切边缘上的路径感兴趣(它们之间可能还有我们不知道的其他边缘,所以只有已经提到的边缘类型是可以的。)

检查是否存在从V1到V4的路径之一(如果路径存在则返回V4):

SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>

检查其他路径是否存在(如果路径存在则返回V4):

SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>

我唯一感兴趣的是知道这两条路径中的一条是否存在。我想用一个查询来做到这一点。

问题

如何将这两个查询合并为一个查询以查明这两个路径之一是否存在?

(如果可能的话,将非常感谢关于如何在 OrientDB 中合并不同遍历查询的一般性答案以及明确的答案。)

谢谢!

试试 unionAll

select expand($c) 
let $a = ( SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>), 
$b = ( SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>),
$c = unionAll( $a, $b )

您可以在下面查看文档link http://orientdb.com/docs/2.1/SQL.html#select-from-multiple-targets