Couchdb 如何在数组大小上编写mango过滤器?

Couchdb 如何在数组大小上编写mango过滤器?,couchdb,couchdb-mango,Couchdb,Couchdb Mango,我希望通过指定数组属性的最小和最大大小来查找带有mango查询的文档。给定一个具有数组属性的文档customers。我希望能够找到客户数量在10到20之间的所有文档 差不多 mango_query = { "doc.customers": {"$size": {"gte": 10}}, "doc.customers": {"$size": {"lte": 20}} }

我希望通过指定数组属性的最小和最大大小来查找带有mango查询的文档。给定一个具有数组属性的文档
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}]}')
运算符$size的参数错误:{[{,10}]})
那么,我应该如何在数组的大小上编写一个芒果过滤器呢?

检查代码时,$size运算符只支持整数参数。因此,它不能与其他运营商结合。它只支持$size精确匹配

norm_ops({[{<<"$size">>, Arg}]}) when is_integer(Arg), Arg >= 0 ->
    {[{<<"$size">>, Arg}]};
norm_ops({[{<<"$size">>, Arg}]}) ->
    ?MANGO_ERROR({bad_arg, '$size', Arg});
norm_ops({[{,Arg}]})当是整数值(Arg),Arg>=0->
{[{,Arg}]};
范数运算({[{,Arg}]})->
?MANGO_错误({bad_arg,$size',arg});
什么时候匹配

match({[{<<"$size">>, Arg}]}, Values, _Cmp) when is_list(Values) ->
    length(Values) == Arg;
match({[{<<"$size">>, _}]}, _Value, _Cmp) ->
    false;
match({[{,Arg}]},Values,{u-Cmp)何时为列表(Values)->
长度(值)==Arg;
匹配({[{,{}]},{u值,{u Cmp)->
虚假的;

length(Values)==Arg
只支持精确匹配

您知道是否可以动态生成适当的整数字段吗?我尝试了
“doc.customers.length”:{“gte”:10}
“doc.customers.size”:{“gte”:10}
但未成功CouchDB不支持此行为。我认为您应该尝试使用视图进行查询。在view map函数中,您可以计算此值。作为附加注释。。。运算符以$开头。这将是“doc.customers.length”的正确方式:{“$gte”:10}但由于不受支持,它将不起作用。您认为使用两个新操作员创建PR可行吗
“$sizeLte”
“$sizeGte”
?重组这些运营商需要多长时间?