OrientDB 3.2.14遍历查询报错:$parent类未找到求助
问题解决:OrientDB子查询引用变量报错及UnidadFiscal查询修正
错误原因
Class $parent not found报错是因为OrientDB的LET子句中,子查询无法通过$parent引用外部LET块里定义的变量,直接使用前面已定义的$uo变量即可解决。
修正后的查询语句
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 = case when $uo.jerarquia = "UNIDAD_FISCAL" then $uo else (traverse in('UnidadOrganizativa_dependencias') from $uo until jerarquia = "UNIDAD_FISCAL").last() end where fechaCreacion >= '2022-01-01' and fechaCreacion <= '2022-12-31' limit 10;
关键修改说明
- 变量引用修正:直接用
$uo替代$parent.uo,OrientDB的LET子句中,后续变量可直接引用前面已定义的变量。 - 自身节点判断:通过
case语句处理$uo本身就是UNIDAD_FISCAL的场景,避免无效遍历。 - 遍历条件优化:将
while jerarquia != "UNIDAD_FISCAL"改为until jerarquia = "UNIDAD_FISCAL",确保遍历到目标节点后停止,再用last()提取最终的UnidadFiscal节点(traverse会返回路径上所有节点,最后一个即为目标节点)。
内容的提问来源于stack exchange,提问作者Marcelo D. Ré
相关产品推荐
相关产品推荐

