OrientDb - 获取节点及其所有关系

OrientDb - Get node and all of its relations

我可以做一个查询来实现顶点和他的所有边(包括其他顶点)吗?

现在我正在做多个查询来实现它:

获取顶点:

select from V where entity_name = 'SomeEntity'

然后遍历每条边 select 它:

select from #EDGE@rid // Multiple in the number of edges for this node

最后越过边缘并获得所有其他顶点(原始顶点除外)

select from #VERTEX@rid // Multiple in the number of vertexes in the edges
SELECT *,in(),out() FROM V WHERE entity_name = 'SomeEntity'

我使用以下方法从我的顶点获取所需深度的所有顶点和边:

TRAVERSE inE(), outE(), inV(), outV() 
FROM (select from V where entity_name = 'SomeEntity') 
WHILE $depth <= 2

一个观察;如果结构是一棵树,Dor Cohen 的答案是有效的。但是,如果是循环图,由于不访问已访问过的节点的节点访问策略,最长路径上的最后一条边会丢失。对我有用的解决方案如下:

从#22:1 遍历 out(), outE(),同时 $depth <= 4

查询遍历所有被视为渐进出顶点的节点,然后遍历渐进出所有顶点的边。

输出如下:

图的结构:

另一方面,如果使用上述查询方式(虽然我不是在顶点或边中查找),输出是:

错过了从#22:4 到#23:1 的边(作为记录),因为它落在较长的路径上。不过,在上述两个记录中都可以找到遗漏边缘 (#28:2) 的参考。