AQL:找不到集合。非阻塞查询

时间:2019-03-28 16:57:36

标签: arangodb aql

如果我运行此查询:

FOR i IN [
    my_collection[*].my_prop,
    my_other_collection[*].my_prop,
    ]
RETURN i

我收到此错误:

  

查询:AQL:找不到集合:my_other_collection(正在解析)

确实“ my_other_collection”可能不存在,但我仍然希望来自“ my_collection”的结果。 如何使该错误不受阻碍?

2 个答案:

答案 0 :(得分:0)

缺少集合将导致错误,并且不能忽略或抑制该错误。也没有后期绑定集合的概念,它使您可以在运行时将字符串评估为集合引用。简而言之:不支持此操作。

问题是为什么首先要使用这种模式。我假设这两个集合都存在,那么它将在返回任何东西之前实现整个数组,这大概是占用大量内存的。

最好将两个集合的文档保存在一个集合中(您可以添加一个额外的属性type来区分它们),或者使用ArangoSearch视图,这样您就可以搜索索引集合中的属性。

答案 1 :(得分:0)

除了上一个答案中已经提到的两种方法(Arango搜索和单个集合)之外,您还可以在JavaScript中(可能在Foxx内)执行此操作: 检查是否存在带有 db_collection(collection-name)的集合 然后使用 aql片段构建查询字符串,并使用 union 合并片段以从不同集合中提取结果。  请注意,如果集合很大,您可能希望过滤结果而不是仅提取所有文档。