ArangoDB查询特定数量的数组匹配项
在ArangoDB中,我有一个带有存储“令牌”字段的文档。令牌是一个int值数组。例如: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; 我将得到一个文档列表,其中至少有四个令牌值与我的数组相同。目前我
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