嵌入在列表中的 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
的集合。它可能应该读作 document
或 document.article
。
我在列表中嵌入了一个文档,我需要查询与一系列字符串的值相匹配的文档。
我的文档:
如您所见,我有一个常规文档。该文档内部是 "categories",每个文档的长度未知。在类别中我有 "confidence" 和 "title"。我需要查询以查找其标题与 ArrayList 中的标题列表相匹配的文档。我认为可行的查询是:
FOR document IN documents FILTER document.categories.title IN @categories RETURN article
@categories 是一个包含标题列表的 ArrayList。如果 ArrayList 中的任何标题在文档中,我希望将其返回。
此查询似乎正在返回 null
。我认为这还没有达到将 ArrayList 与我文档中的 "title" 字段进行比较的程度。我知道我可以使用 [#]
访问 "categories" 列表,但我不知道如何在 "categories".
查询
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
的集合。它可能应该读作 document
或 document.article
。