在ArangoDB中进行EXISTS查询的最佳方法是什么

时间:2018-12-21 15:16:43

标签: arangodb aql

我想检查查询(过滤器)是否不为空,在PostgreSQL中类似这样:

select EXISTS(select 1 from tab where tab.name = 'abc')

https://www.postgresql.org/docs/11/functions-subquery.html

我目前在AQL中的方法是:

RETURN LENGTH(for d in tab filter d.name = 'abc' RETURN 1) > 0

1 个答案:

答案 0 :(得分:1)

子查询FOR d IN tab FILTER d.name == 'abc'可能会在早期找到匹配的文档,但由于未定义限制,因此它将继续查找更多文档。因此,我建议:

RETURN LENGTH(FOR d IN tab FILTER d.name == 'abc' LIMIT 1 RETURN true) > 0

这将返回[ true ]作为查询结果。

您也可以RETURN d starting from v3.4.0。优化器规则optimize-subqueries识别模式LENGTH(... RETURN doc),并将doc替换为常数值true