3

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

我的文件:

在此处输入图像描述

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

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

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

此查询似乎正在返回null。我不认为它已经下降到将 ArrayList 与我文档中的“标题”字段进行比较的程度。我知道我可以使用访问“类别”列表,[#]但我不知道如何在“类别”中搜索“标题”。

4

1 回答 1

3

查询

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

于 2015-01-12T07:53:58.310 回答