【问题标题】:AQL: collection not found. non-blocking queryAQL:未找到集合。非阻塞查询
【发布时间】:2023-04-05 17:58:01
【问题描述】:

如果我运行这个查询:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 2016-07-06
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        相关资源
        最近更新 更多