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