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

问题描述 投票:0回答:2

如果我运行此查询:

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

我收到此错误:

查询:AQL:未找到集合:my_other_collection(解析时)

'my_other_collection'可能不存在,但我仍然想要'my_collection'的结果。如何使此错误无阻塞?

arangodb aql
2个回答
0
投票

缺少的集合将导致错误,这不能被忽略或抑制。还没有后期绑定集合的概念,它允许您在运行时将字符串计算为集合引用。简而言之:这不受支持。

问题是为什么你想首先使用这种模式。我假设两个集合都存在,然后它将在返回任何内容之前实现完整数组,这可能是内存密集型的。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.