2012-03-17 21 views
0
function(values) { 
    return values.sort(
     function(a, b) { 
      return b['timestamp'] - a['timestamp']; 
     } 
    ); 
} 

私は現在、Riak MapReduceクエリのreduceフェーズで上記のコードを実行していますが、タイムスタンプキーの値で正しくソートされていません。なぜどんなアイデア?Riak並べ替えでMapReduce

query = riak_client.add('bucket') 

query.map("function(v) { var data = JSON.parse(v.values[0].data); if (data.item == 'A') { return [[v.key, data]]; } return []; }") 

query.reduce("function(values) { return values.sort(function(a, b) { return b['timestamp'] - a['timestamp']; }); }") 

for result in query.run(): 
    print result 
+0

'bの[ 'タイムスタンプは']' '' B [1] [ 'タイムスタンプ'] 'と' [ 'タイムスタンプ']でなければなりません必要がありますBashoのユーザーからの回答に応じて、「a [1] ['timestamp'] 'にしてください:http://lists.basho.com/pipermail/riak-users_lists.basho.com/2012-March/007895.html – ekillaby

答えて

2

が効果的な結果の配列を返す、角括弧で戻り部分をラッピングしてみてください。

私はRiakにPythonクライアントを使用していますし、これは上記が含まれている完全なコードでは、ステップを減らします。

function(values) { 
    return values.sort(
    function(a, b) { 
     return b['timestamp'] - a['timestamp']; 
    } 
); 
} 

が、それは次のようになり持っている:

function(values) { 
    return [values.sort(
    function(a, b) { 
     return b['timestamp'] - a['timestamp']; 
    } 
)]; 
} 
+0

Iこのために奇妙な量の再帰的な結果を得ています。なぜどんなアイデア? – James

関連する問題