1

在 ArangoDB 中,我有一个文档,其中包含一个用于存储“令牌”的字段。令牌是一个 int 值数组。例如:

token:
[0] = 5000
[1] = 250
[2] = 300
etc... 

一个令牌最多可以有大约 50 个这些值。我想查询与我的 ArrayList 至少有 4 个标记的文档。例如,如果我有一个包含以下值的 ArrayList:

[0] = 1;
[1] = 200;
[2] = 400;
[4] = 600;
[5] = 570;

我会得到一个文档列表,这些文档至少有四个与我的数组相同的标记值。目前我只是在做:

String query = "FOR doc IN docs LET contained = (FOR token IN @tokenValues FILTER token IN doc.tokens[*]) FILTER LENGTH(contained) > 0 RETURN doc";
            bindVars = new MapBuilder().put("tokenValues", tokenArray).get();

然后我得到至少有 1 个共同标记的文档,并在所有这些文档中搜索至少有 4 个共同标记的文档。我想有一种方法只能得到至少有 4 个共同点的结果,但我似乎无法弄清楚如何去做。

4

1 回答 1

3

我认为以下 AQL 查询会做到这一点:

FOR doc IN docs 
  LET contained = (
    FOR token IN doc.tokens 
      FILTER token IN @tokens 
      RETURN token
    ) 
  FILTER LENGTH(contained) >= 4 
  RETURN doc
于 2015-05-11T10:15:30.490 回答