如果我运行此查询:
FOR i IN [
my_collection[*].my_prop,
my_other_collection[*].my_prop,
]
RETURN i
我收到此错误:
查询:AQL:找不到集合:my_other_collection(正在解析)
确实“ my_other_collection”可能不存在,但我仍然希望来自“ my_collection”的结果。 如何使该错误不受阻碍?
答案 0 :(得分:0)
缺少集合将导致错误,并且不能忽略或抑制该错误。也没有后期绑定集合的概念,它使您可以在运行时将字符串评估为集合引用。简而言之:不支持此操作。
问题是为什么首先要使用这种模式。我假设这两个集合都存在,那么它将在返回任何东西之前实现整个数组,这大概是占用大量内存的。
最好将两个集合的文档保存在一个集合中(您可以添加一个额外的属性type
来区分它们),或者使用ArangoSearch视图,这样您就可以搜索索引集合中的属性。
答案 1 :(得分:0)
除了上一个答案中已经提到的两种方法(Arango搜索和单个集合)之外,您还可以在JavaScript中(可能在Foxx内)执行此操作: 检查是否存在带有 db_collection(collection-name)的集合 然后使用 aql片段构建查询字符串,并使用 union 合并片段以从不同集合中提取结果。 请注意,如果集合很大,您可能希望过滤结果而不是仅提取所有文档。