在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();
然后我获得至少有一个共同令牌的文档,并搜索所有这些至少有4个共同点的文档。我想有一种方法只能得到至少有4个共同点的结果,但我似乎无法弄清楚如何做到这一点。
答案 0 :(得分: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