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

現在、Riak MapReduce クエリの reduce フェーズで上記のコードを実行していますが、タイムスタンプ キーの値で正しくソートされていません。理由はありますか?

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

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
4

1 に答える 1

2

戻り部分を角かっこで囲み、効果的に結果の配列を返すようにしてください。

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'];
    }
  )];
}
于 2012-03-19T14:26:37.357 に答える