0

我正在寻找为 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 应用程序,以正确的顺序调用正确的查询建立正确的反应。

如果有人看到了这样做的最佳方法,那么获得一些提示/建议会很棒。

谢谢!

4

0 回答 0