4

私は map-reduce の概念全体に不慣れで、単純な map-reduce 関数を実行しようとしています。

現在、NoSQL データベースとして Couchbase サーバーを使用しています。

すべてのタイプのリストを取得したい:

key: 1, value: null
key: 2, value: null
key: 3, value: null

ここに私の文書があります:

{
   "type": "1",
   "value": "1"
}

{
   "type": "2",
   "value": "2"
}

{
   "type": "3",
   "value": "3"
}

{
   "type": "1",
   "value": "4"
}

私がやろうとしているのは: マップ関数を書く:

function (doc, meta) {
  emit(doc.type, 0);
}

組み込みの reduce 関数を使用する:

_count

しかし、期待した結果が得られません。

すべてのタイプを取得するにはどうすればよいですか?

アップデート

タイプが異なるドキュメントであることに注意してください。reduce はドキュメントに対して機能し、ドキュメントの外部では実行されないことがわかっています。

4

1 に答える 1

8

デフォルトでは、すべてのキー グループが削減されます。必要な機能は次のgroup_levelとおりです。

これはreduce=true

~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=0'
{"rows":[
{"key":null,"value":4}
]
}

しかし、これがキーの最初のレベルで削減を取得する方法です

~ $ curl 'http://localhost:8092/so/_design/dev_test/_view/test?group_level=1'
{"rows":[
{"key":"1","value":2},
{"key":"2","value":1},
{"key":"3","value":1}
]
}

これに関するブログ投稿もあります: http://blog.couchbase.com/understanding-grouplevel-view-queries-compound-keys

カウチベース管理コンソールには適切なオプションがあります: カウチベース管理コンソールの group_level オプション

于 2013-08-29T19:38:54.237 に答える