Orientdb:获取路径的所有遍历元素

时间:2017-01-05 09:51:04

标签: select orientdb traversal elements

我们说我的查询如下:

select out("E1").out("E2").out("E3") from V1

其中E1,E2,E3是延伸的类别" E"和V1是一个扩展" V"。

的类

我想获得在执行查询时遍历的所有元素(即不仅仅是最终结果)。将其视为对查询执行所涉及的元素的一种跟踪。

我尝试了以下遍历命令:

traverse in from (traverse outE("E3") from (traverse in from (traverse outE("E2") from (traverse in from (traverse outE("E1") from V1)))))

这接近我需要的但却不一样。这个命令的问题是,如果初始设置的某些顶点是" V1"包含类的边缘" E2"或者" E3"然后它们也将被遍历,即使我不希望它们被遍历(因为选择查询将遍历返回的顶点的" E2"边缘)通过遍历" E1"边缘) 也就是说,我想让TRAVERSE命令只遍历上一步的结果,而不是遍及那一点的所有结果

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

你应该使用MATCH:

 MATCH
 {class:V1, as:a} -E1-> {as:b} -E2-> {as:c} -E3-> {as:d}
 RETURN $patterns

这将返回与模式匹配的所有RID,例如

|   a   |   b   |   c   |   d   |
| #12:0 | #12:1 | #12:2 | #12:4 |
| #12:3 | #12:5 | #12:7 | #12:8 |

如果您需要展开它们,只需将return $patterns替换为return $elements,例如

 MATCH
 {class:V1, as:a} -E1-> {as:b} -E2-> {as:c} -E3-> {as:d}
 RETURN $elements