2012-01-05 7 views
1

これは最近のバージョンのcouchbaseサーバーにあります。couchdb view/reduce。時々あなたは値を返すことができます、時々あなたは傾けることができます..?

最後の目的は、reduceキーとgroupbyキーが重複キーの値を配列値を持つ単一の行に集約することです。

低減/グループ(実際に放出されたこのような50行が多分ある)なしでビュー結果:

{ 
"total_rows": 3, 
"offset": 0, 
"rows": [ 
{ 
"id": "1806a62a75b82aa6071a8a7a95d1741d", 
"key": "064b6b4b-8e08-4806-b095-9e59495ac050", 
"value": "1806a62a75b82aa6071a8a7a95d1741d" 
}, 
{ 
"id": "47abb54bf31d39946117f6bfd1b088af", 
"key": "064b6b4b-8e08-4806-b095-9e59495ac050", 
"value": "47abb54bf31d39946117f6bfd1b088af" 
}, 
{ 
"id": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f", 
"key": "064b6b4b-8e08-4806-b095-9e59495ac050", 
"value": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f" 
} 
} 

とは、+ group_level = 1を削減:

function(keys,values,re){ 
    return values; 
} 

はソファからの誤差を生じます実際のビューから実際の50行程度です(ビュー行が少なくても失敗します)。 couchは、データが十分に急速に縮小していないと言っています。しかし、この同じタイプのものは、ビューキーが整数であり、少量のデータがあるときにはちょうど良い仕方で動作します。

誰かが私の違いを説明できますか?

答えて

0

私はほとんどいつも "キー"パラメータでこのビューを照会していますので、実際にはソファで値を集計する必要はなく、簡単かつ効率的に行うことができますアプリ。

2

Reduce値は、内部b-treeデータ形式での格納方法の性質上、可能な限り小さくする必要があります。これがなぜ起こっているのかに関する少しの情報がwikiにあります。

一意の値を識別する場合は、マップ関数で行う必要があります。このwikiページのsectionには、あなたが使用できる方法が1つあります。 (私は他人がいると確信しています)

+0

エラーの情報をありがとうございます。私が間違っている場合は私を修正しますが、リンクされたテクニックは重複するキーで行を削除するためのものです。重複を排除したくないので、その値を集計したいと思います。私はreduce/groupをスキップし、アプリケーションロジック内で集約するかもしれません。とにかくキー= "sdasd" paramでこのビューを打つのが普通です。 – jdc0589

+0

ビューの出力からのみ、データベースから重複を「削除」しません。あなたは正確に何を達成したいですか?特定のキーが何回発生するかをカウントしますか? –

+0

私はそれをうまく表現していないでしょう、私はそれがデータベースを変えないと知っています。 – jdc0589

関連する問題