Orientdb 在遍历时携带变量

Orientdb 在遍历时携带变量,orientdb,graph-traversal,Orientdb,Graph Traversal,在我的OrientDB数据库中,我有一个文档类a,它有4个字段和一个关系: 身份证件 父ID 来源 航空站 雷尔 我需要选择具有终端集的所有元素的根元素的源。例如: A1:Rel:NULL,id:1,parentId:NULL,源代码:test A2:Rel:A1,id:2,parentId:1 A3:Rel:A2,id:3,parentId:2 A4:Rel:A3,id:4,parentId:3,终端:no1 A5:Rel:A4,id:5,parentId:4 我需要得到的是: 终端:1号,来

在我的OrientDB数据库中,我有一个文档类a,它有4个字段和一个关系:

身份证件 父ID 来源 航空站 雷尔 我需要选择具有终端集的所有元素的根元素的源。例如:

A1:Rel:NULL,id:1,parentId:NULL,源代码:test A2:Rel:A1,id:2,parentId:1 A3:Rel:A2,id:3,parentId:2 A4:Rel:A3,id:4,parentId:3,终端:no1 A5:Rel:A4,id:5,parentId:4 我需要得到的是: 终端:1号,来源:测试

我现在能做的就是获取所有来源,但我不知道它们属于哪个终端:


从遍历中选择源。从选择中选择Rel,其中终端不为空,而$depth请尝试此操作。抱歉,没有数据库,这可能会很困难

SELECT source, $terminal FROM (
  TRAVERSE A.Rel FROM (
    SELECT FROM A WHERE terminal IS NOT NULL LET $parent.$parent.$t = terminal
  ) WHILE parentId IS NOT NULL
) WHERE parentId IS NULL

我试过稍微调整你的版本,你可以在我的编辑中看到结果。我还为这张表画了插图。
orientdb {GratefulDeadConcerts}> SELECT source, $terminal FROM ( TRAVERSE A.Rel FROM ( SELECT FROM A WHERE terminal IS NOT NULL LET $parent.$parent.$terminal = terminal ) ) WHERE parentId IS NULL

----+-----+------
#   |@RID |source
----+-----+------
0   |#-2:1|test
----+-----+------
SELECT source, $terminal FROM (
  TRAVERSE A.Rel FROM (
    SELECT FROM A WHERE terminal IS NOT NULL LET $parent.$parent.$t = terminal
  ) WHILE parentId IS NOT NULL
) WHERE parentId IS NULL