微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据数组的大小编写芒果过滤器?

如何解决如何根据数组的大小编写芒果过滤器?

我想通过指定数组属性的最小和最大大小来查找带有芒果查询的文档。给定一个具有数组属性 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}]}')

那么我应该如何根据数组的大小编写芒果过滤器?

解决方法

检查代码here,$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 仅支持完全匹配

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。