Couchdb 如何在数组大小上编写mango过滤器?
我希望通过指定数组属性的最小和最大大小来查找带有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}} }
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”
?重组这些运营商需要多长时间?