0

couchdbビューを使用すると、キー順に結果を取得できます。私はこれを使用して、最大の数値に関連付けられた値を取得しています。たとえば、次の結果を取得します(キー:値形式):

{1:'sam'}
{2:'jim'}
{4:'joan'}
{5:'jill'}

couchDBは、キーに従ってそれらをソートします。(キーを「スコア」と考えると役立つ場合があります。)スコアが最も高いのは誰か、または最も低いのは誰かを知りたいです。

私は次のようなreduce関数を作成しました:

function(keys, values) {

var len = values.length;
return values[len - 1];

}

_statなどがあることは知っていますが、これらは私のアプリケーションでは不可能です(これはスリム化された架空の例です)。

通常、このreduceを実行すると、降順が設定されているかどうかに応じて、「sam」または「jill」のいずれかが表示されます。これが私が欲しいものです。ただし、大規模なデータセットでは、リストの中央から誰かを取得することがあります。

これはrereduceで起こっているのではないかと思います。rereduceを実行すると、結果の順序が保持されると想定していました。しかし、これが事実であるという保証はありません。rereduceでは、キーがnullであることがわかっているため、通常の並べ替えルールでは並べ替えられません。これは本当ですか?

もしそうなら、私の最高得点者を取得する方法について何かアドバイスはありますか?

4

1 に答える 1

1

ええ、おそらくクラスター環境では保証できないため、並べ替え順序は保証されていないと思います。ここでmap/reduceを使用する方法は少し厄介だと思いますが、本当に良い答えが必要な場合は、ビューコードを投稿する必要があります。

于 2013-03-13T09:48:14.360 に答える