ArangoDB查询特定数量的数组匹配项

ArangoDB查询特定数量的数组匹配项,arangodb,aql,nosql,Arangodb,Aql,Nosql,在ArangoDB中,我有一个带有存储“令牌”字段的文档。令牌是一个int值数组。例如: token: [0] = 5000 [1] = 250 [2] = 300 etc... 一个令牌最多可以有50个这样的值。我想查询与我的ArrayList至少有4个相同标记的文档。例如,如果我有一个带有以下值的ArrayList: [0] = 1; [1] = 200; [2] = 400; [4] = 600; [5] = 570; 我将得到一个文档列表,其中至少有四个令牌值与我的数组相同。目前我

在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个共同点的结果,但我似乎不知道如何才能做到这一点

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

FOR doc IN docs 
  LET contained = (
    FOR token IN doc.tokens 
      FILTER token IN @tokens 
      RETURN token
    ) 
  FILTER LENGTH(contained) >= 4 
  RETURN doc