在 ArangoDB 中进行 EXISTS 查询的最佳方法是什么
What's the best way to make EXISTS query in ArangoDB
我想检查查询(过滤器)是否不为空,在 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
子查询 FOR d IN tab FILTER d.name == 'abc'
可能会在早期找到匹配的文档,但会继续寻找更多,因为没有定义限制。因此,我会推荐:
RETURN LENGTH(FOR d IN tab FILTER d.name == 'abc' LIMIT 1 RETURN true) > 0
这将 return [ true ]
作为查询结果。
您也可以 RETURN d
starting from v3.4.0。优化器规则 optimize-subqueries
识别模式 LENGTH(... RETURN doc)
并将 doc
替换为常量值 true
.
我想检查查询(过滤器)是否不为空,在 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
子查询 FOR d IN tab FILTER d.name == 'abc'
可能会在早期找到匹配的文档,但会继续寻找更多,因为没有定义限制。因此,我会推荐:
RETURN LENGTH(FOR d IN tab FILTER d.name == 'abc' LIMIT 1 RETURN true) > 0
这将 return [ true ]
作为查询结果。
您也可以 RETURN d
starting from v3.4.0。优化器规则 optimize-subqueries
识别模式 LENGTH(... RETURN doc)
并将 doc
替换为常量值 true
.