Erlang 如何在riak的mapreduce上将二进制数据转换成整数

Erlang 如何在riak的mapreduce上将二进制数据转换成整数,erlang,riak,erlang-shell,erlang-ports,Erlang,Riak,Erlang Shell,Erlang Ports,我在riak erlang客户机上工作 我已经做了以下工作 3> Mapf = fun(Obj,_,_) -> [riak_object:get_value(Obj)] end. #Fun<erl_eval.18.82930912> 4> 4> {ok, [{0,[R]}]} = riakc_pb_socket:mapred(Pid,<<"tst">>, [{map{qfun,Mapf},none,true}]). ** e

我在riak erlang客户机上工作

我已经做了以下工作

3> Mapf = fun(Obj,_,_) -> [riak_object:get_value(Obj)] end.
#Fun<erl_eval.18.82930912>
4> 
4>  {ok, [{0,[R]}]} = riakc_pb_socket:mapred(Pid,<<"tst">>, [{map{qfun,Mapf},none,true}]).    
** exception error: no match of right hand side value {ok,[{0,[<<"2">>,<<"4">>,<<"6">>,<<"3">>,<<"5">>,<<"1">>]}]}
3>Mapf=fun(Obj,u,u)->[riak_对象:获取_值(Obj)]结束。
#乐趣
4> 
4> {ok,[{0[R]}]}=riakc_-pb_-socket:mapred(Pid,[{map{qfun,Mapf},none,true}])。
**异常错误:右侧值不匹配{ok,[{0,[,,,,,]}]}
如何解决这个问题

以及如何解决这类问题

{ok, [{0,[S]}]} = riakc_pb_socket:mapred(Pid,<<"test">>,[{map,  {qfun,Maps},none,true}]).   
** exception error: no match of right hand side value {ok,[{0,
                                                        [<<"{\"age\": 24, \"name\": \"krishna\"}">>,
                                                         <<"{\"age\": 29, \"name\": \"sharat\"}">>,
                                                         <<"{\"age\": 27, \"name\": \"anil\"}">>,
                                                         <<"{\"age\": 28, \"name\": \"kumar\"}">>,
                                                         <<"{\"age\": 24, \"name\": \"gopi\"}">>,
                                                         <<"{\"age\": 25, \"name\": \"ramesh\"}">>]}]}
{ok,[{0[S]}]}=riakc_pb_socket:mapred(Pid,[{map,{qfun,Maps},none,true}])。
**异常错误:右侧值{ok,[{0,
[,
,
,
,
,
]}]}
如果我只想得到年龄,那年龄就更大了。如何编写映射函数。

您有模式匹配问题。您两次都尝试使用
[R]=[,…]
匹配列表

[R]
实际上匹配一个单元素列表,元素为
R

您需要删除这些括号以匹配整个数据结构,如:
{ok,[{0,R}]