SQLクエリでのフィールド選択は、(値がWHERE
句内の選択にも利用される場合)出力するキーにフィールドを追加することによって、またはデータが必要としているクエリパラメータとは独立している場合、値として出力するかのどちらかで、対応するビュー定義に翻訳することができます。
たとえば、格納された各ドキュメントから次のmap()
関数を使用して国別の売上データを取得するには:
function(doc, meta) { emit([doc.city, doc.sales], null); }
reduce関数内で使用される情報を出力したい場合、これはemit()
の各呼び出しによって生成された値で指定するべきです。たとえば、売上高をreduceするためには、上記map()
関数を次のように書き換えます:
function(doc, meta) { emit(doc.city, doc.sales); }
出力は対して変わりませんが (キーは単純化されていますが)、数値を使用して情報をreduceすることができるようになります。
クエリの値から出力データやフィールドの値を完全に分離したい場合、これらのフィールドをビューの値の一部として明示的に出力できます。例:
function(doc, meta) { emit(doc.city, [doc.name, doc.sales]); }
各アイテムでドキュメント全体が必要な場合、クライアントライブラリを介してビューをリクエストしたあとに、ドキュメントデータをロードしてください。このパラメータと性能への影響の詳細については、「ビューの記述のベストプラクティス」を参照してください。
SELECT
文の中では、出力に指定されたレコードの主キーを含むことは一般的な事例です。各行で生成されるドキュメントIDがビューの出力にいつも含まれているので、ビューの中ではこれは通常必要ありません。