2015-01-10 34 views
3

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

我的文档:

enter image description here

正如你所看到的,我有一个常规文档。该文档内是每个文档具有未知长度的“类别”。内部类别我有“自信”和“标题”。我需要查询以查找具有与ArrayList中的标题列表匹配的标题的文档。我想会的工作的查询是:

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

@categories是标题列表的ArrayList。如果ArrayList中的任何标题都在文档中,我希望它被返回。

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

回答

3

查询

如果 document.categories是一个标
FOR document IN documents 
    FILTER document.categories.title IN @categories 
    RETURN article 

会的工作,但如果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