OrientDB 从变量遍历

问题描述 投票:0回答:1

我在 OrientDB 3.2.14 中有这个图:

用户 (Usuario) 可以属于 UnidadOrganizativa,该组织可以是 Oficina、Dpto、UnidadFiscal 或 FiscaliaRegional。 层次结构是:Oficina <--- Dpto <--- UnidadFiscal <--- FiscaliaRegional.

我需要用 UnidadFiscal 列出每个 Legajo,这个查询应该可以工作,但会抛出错误:

select fechaCreacion.format('yyyyMM') as name,
       $uo as uo,
       $uf  as UF   
from Legajo
    Let $uo = $current.out('Legajo_responsable').out('Fiscal_usuario').out('Usuario_unidadFiscal')[jerarquia != "FISCALIA_GENERAL"][0],
        $uf = (traverse in('UnidadOrganizativa_dependencias') from $parent.uo while jerarquia != "UNIDAD_FISCAL")
where fechaCreacion >= '2022-01-01' and fechaCreacion <= '2022-12-31' limit 10;

当我运行它时,东方说:

Class $parent not found DB name="heimdall-20230801"

我尝试了不同的方式,但没有任何效果。子查询中对 $parent 和 $current 的任何引用都不起作用。

在查询中 $uo 有一个正确的值,但如果它不是一个,我需要获取 UO 所属的 UnidadFiscal。

orientdb orientdb3.0
1个回答
0
投票

首先,从您的问题中我了解到您希望在结果中找到所有“Legajo”顶点和“Usuario_unidadFiscal”边作为一个兄弟行。 OrientDB MATCH 查询在这里可能会有帮助。

下面是一个可以工作的查询示例(注意:我没有测试它,所以无法判断它是否会按原样工作,可能需要修改)

MATCH {class:Legajo, 
       as: legjo, 
       where:{fechaCreacion >= '2022-01-01' AND 
              fechaCreacion <= '2022-12-31'} }
          .out('Legajo_responsable')
          .out('Fiscal_usuario')
          .outE('Usuario_unidadFiscal'){as:unidadf, 
                                        where: {jerarquia != 'FISCALIA_GENERAL'} } 
RETURN expand(legjo), expand(unidadf)

查询的思想是选择并返回顶点,然后传递到所需的边并返回扩展的(所有字段)。

正如我所说,我还没有测试过它,但是你可以尝试这种方法并检查。

© www.soinside.com 2019 - 2024. All rights reserved.