我们说我的查询如下:
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命令只遍历上一步的结果,而不是遍及那一点的所有结果
有没有办法实现这个目标?
答案 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