`
langzhe
  • 浏览: 278960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

根据 Second Index和 mapred查询数据

    博客分类:
  • riak
 
阅读更多

application 查询方法

get_last_item() ->

    {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),

    Bucket = <<"rends/ejabberd/pubsub_item">> ,

    Inputs = {index, Bucket, <<"idx_int">>, 1}, 

    Query = [{map, {modfun, trend_riak, get_map_bucket_values}, none, false},%%需要借助测方法由<B,K>转换成到value

                   {reduce,  {modfun, trend_riak, get_reduce_bucket_values}, get_last_entry, true}],  %%得到最后一条记录

    riakc_pb_socket:mapred(Pid, Inputs, Query).

 

打包在riak中的代码 :返回结果必须是list

 64 get_reduce_bucket_values(Records, get_last_entry)->

 65     io:format("get_last_entry Records = ~p~n", [Records]),

 66     F = fun(#pubsub_item{published=Published, level=Level},

 67             #pubsub_item{published=Published2, level=Level2}) ->

 68             if Level < Level2 -> true;     

 69                Level == Level2 ->             

 70                     if  Published < Published2 -> true;

 71                         true -> false                  

 72                     end;  

 73                true -> false

 74             end

 75         end,

 76     case lists:sort(F, Records) of 

 77         [] -> [];

 78         [PublishItem] -> [PublishItem];

 79         List when is_list(List)->  [hd(List)]                                                                                                                                                 

 80     end;

 81 get_reduce_bucket_values(Records, {Start, Max})->


13
15
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics