0

我想通过指定数组属性的最小和最大大小来查找带有芒果查询的文档。给定一个具有数组属性的文档customers。我希望能够找到客户数量在 10 到 20 之间的所有文档。

就像是

mango_query = {
  "doc.customers": {"$size": {"gte": 10}},
  "doc.customers": {"$size": {"lte": 20}}
}

对这样的请求的响应是

Bad argument for operator $size: {[{<<36,108,116,101>>,10}]}')

那么我应该如何写一个数组大小的芒果过滤器呢?

4

1 回答 1

0

检查这里的代码,$size 运算符仅支持整数参数。所以它不能与其他运算符结合使用。它仅支持 $size 完全匹配。

norm_ops({[{<<"$size">>, Arg}]}) when is_integer(Arg), Arg >= 0 ->
    {[{<<"$size">>, Arg}]};
norm_ops({[{<<"$size">>, Arg}]}) ->
    ?MANGO_ERROR({bad_arg, '$size', Arg});

并且在匹配时

match({[{<<"$size">>, Arg}]}, Values, _Cmp) when is_list(Values) ->
    length(Values) == Arg;
match({[{<<"$size">>, _}]}, _Value, _Cmp) ->
    false;

length(Values) == Arg仅支持完全匹配

于 2021-05-25T08:12:01.197 回答