我在列表中嵌入了一个文档,我需要查询与一系列字符串的值匹配的文档。
我的文档:
如您所见,我有一个常规文档。该文档内部是“类别”,每个文档的长度未知。内部类别我有“信心”和“标题”。我需要查询以查找其标题与 ArrayList 中的标题列表相匹配的文档。我认为可行的查询是:
FOR document IN documents FILTER document.categories.title IN @categories RETURN article
@categories 是一个包含标题列表的 ArrayList。如果 ArrayList 中的任何标题在文档中,我希望将其返回。
此查询似乎返回 null
。我认为这还没有达到将 ArrayList 与我文档中的“标题”字段进行比较的程度。我知道我可以使用 [#]
访问“类别”列表,但我不知道如何在“类别”中搜索“标题”。
最佳答案
查询
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
。
关于graph-databases - 嵌入在列表中的 ArangoDB 查询属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882450/