嵌入在列表中的 ArangoDB 查询属性

ArangoDB Query Attribute Embedded in List

我在列表中嵌入了一个文档,我需要查询与一系列字符串的值相匹配的文档。

我的文档:

如您所见,我有一个常规文档。该文档内部是 "categories",每个文档的长度未知。在类别中我有 "confidence" 和 "title"。我需要查询以查找其标题与 ArrayList 中的标题列表相匹配的文档。我认为可行的查询是:

FOR document IN documents FILTER document.categories.title IN @categories RETURN article

@categories 是一个包含标题列表的 ArrayList。如果 ArrayList 中的任何标题在文档中,我希望将其返回。

此查询似乎正在返回 null。我认为这还没有达到将 ArrayList 与我文档中的 "title" 字段进行比较的程度。我知道我可以使用 [#] 访问 "categories" 列表,但我不知道如何在 "categories".

中搜索 "title"

查询

FOR document IN documents 
  FILTER document.categories.title IN @categories 
  RETURN article
如果 document.categories 是标量,

会起作用,但如果 document.categories 是数组,它不会起作用。原因是 IN 运算符左侧的数组不会自动展开。

要查找文档,可以按如下方式重写查询:

FOR document IN documents 
  FILTER document.categories[*].title IN @categories 
  RETURN document

FOR document IN documents 
  LET titles = (
    FOR category IN document.categories
      RETURN category.title
  )
  FILTER titles IN @categories 
  RETURN document

除此之外,article 将是未知的,除非有一个名为 article 的集合。它可能应该读作 documentdocument.article