You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ArangoDB/AQL中实现类似SQL左连接的可选关联查询

AQL实现类似SQL LEFT JOIN的关联查询

要实现类似SQL LEFT JOIN的效果——即使judgement_of中没有对应边,也保留feed_item的文档并将j设为null——可以用以下两种方法:

方式一:使用LEFT OUTER遍历修饰符

通过LEFT OUTER FOR指定图遍历,当无匹配边时仍保留主集合文档,再通过判断将空值转为null:

FOR d IN feed_item
  FILTER d.ingested > @when
  SORT d.score DESC
  LIMIT 50
  LEFT OUTER FOR j IN INBOUND d judgement_of
  RETURN {
    d: d,
    j: j ? j : null
  }

LEFT OUTER FOR会保留所有符合过滤条件的feed_item数据,若没有对应的judgement_of边,j会被设为null。

方式二:用子查询获取匹配边

通过LET结合子查询获取单条匹配边(存在则取第一条,不存在则返回null):

FOR d IN feed_item
  FILTER d.ingested > @when
  SORT d.score DESC
  LIMIT 50
  LET j = FIRST(
    FOR j_edge IN INBOUND d judgement_of
    RETURN j_edge
  )
  RETURN { d: d, j: j || null }

FIRST()会返回子查询结果的首个元素,无结果时返回null,最后通过j || null统一空值表现。

注意:两种方式都必须明确关联feed_item文档d与judgement_of边的关系(即INBOUND d judgement_of),否则遍历会变成全量扫描边集合,逻辑不符合需求。

内容的提问来源于stack exchange,提问作者Paul Houle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:07:24