我正在寻找为 ArangoDB 图数据库编写动态查询,并且想知道是否有最佳实践或标准方法来做这件事。
通过“动态查询”,我的意思是用户将能够构建一个查询,然后在数据集上执行。
ArangoDB 可以支持的方法包括:
- 通过手动注入 bindvars 动态生成 AQL 查询
- 编写 Foxx 函数以提供支持的查询,并让另一个 Foxx 函数将它们绑定在一起以构建响应。
- 编写一个工作流,将数据提取到一个临时集合中,然后调用 Foxx 函数来过滤/排序数据以获得所需的结果。
查询将是非常开放的,有人会(例如):
- 查询所有人口超过10,000,000的国家
- 以平方公里为单位按陆地对国家进行排序
- 选择土地覆盖率排名前 10 的国家
- 选择每个国家/地区使用的主要语言
- 计算每种语言的出现次数。
该查询本身就可以直接执行,但是如果用户能够 [x] 检查或从一系列支持的查询选项中进行选择,以他们自己定义的方式对它们进行排序,并接收输出,则涉及更多一些。
是否有一些支持或推荐的方法来执行此操作?
我目前的方法是编写在每个部分上交付的 AQL 块,可能采用 LET Q1 = (....)、LET Q2 = (...) 格式,然后最后在查询的底部有一个处理查询以生成响应的通用方法。
但我有一种感觉,巧妙地使用 Foxx 函数在这里也有帮助,将 Foxx-Query-Q1 和 Foxx-Query-Q2 编码为支持每种查询类型,然后是一个聚合 Foxx 应用程序,以正确的顺序调用正确的查询建立正确的反应。
如果有人看到了这样做的最佳方法,那么获得一些提示/建议会很棒。
谢谢!