arangodb - 在 ArangoDB 中进行 EXISTS 查询的最佳方法是什么
问题描述
我想检查一个查询(过滤器)是否不为空,在 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
这将[ true ]
作为查询结果返回。
您也可以RETURN d
从 v3.4.0 开始。优化器规则optimize-subqueries
识别模式LENGTH(... RETURN doc)
并替换doc
为常量值true
。
推荐阅读
- javascript - iOS iframe 太宽
- python - 为所有字符串字段一般地去除空格 - SQLAlchemy
- java - 如何将 SAP Business One DI 服务器与 JAVA 集成
- sybase - PowerBuilder。数据窗口中表格列的数字类型
- python - 将字段动态添加到 Django 模型并迁移和返回模板
- c# - 更新导致 SQL 存储过程错误
- symfony - 已安装 SuluArticleBundle,但管理菜单中的文章选项不可用
- sqlite - sqlite3_step 失败时是否需要调用 sqlite3_finalize
- kubernetes - 安装的 nfs 卷的 Kubernetes 权限被拒绝
- xslt - xslt 获取祖先文件夹路径