Search:

Search all manuals
Search this manual
Manual
Couchbase Server マニュアル 2.0
Community Wiki and Resources
Couchbase Server 2.0をダウンロード
Couchbase 開発者ガイド 2.0
クライアントライブラリ
Couchbase Server フォーラム
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
9.9 ビューとクエリのパターンの例
Chapter Sections
Chapters

9.9.8. 選択されたレコードの出力

同じバケット内で異なるドキュメントタイプを格納したい場合、map()フェーズで指定したレコードタイプのみでビューが生成されたかどうか確認した方がよいでしょう。これは、レコードを選択するためにif文を使用して実現できます。

たとえば、ブログの投稿とコメントを同じバケットに格納する場合、ブログの投稿のビューが次のmapを使用して作成されます:

Javascript
function(doc, meta) {
    if (doc.title && doc.type && doc.date && 
        doc.author && doc.type == 'post') 
    {
        emit(doc.title, [doc.date, doc.author]);
    }
}

同じ解決方法が、特定のクエリ構造を許可しながら、特定の範囲、もしくは値のドキュメントのビューを作成したい場合にも使用できます。たとえば、統計ログシステムから日付範囲でwarningタイプのすべてのレコードをフィルタリングするために、次のmap()関数を使用できます:

Javascript
function(doc, meta) {
    if (doc.logtype == 'error') 
    {
       emit([doc.year, doc.mon, doc.day],null);
    }
}

同じ解決策は特定の複合クエリタイプでも使用できます。たとえば、30分以内で料理できて、特定の食材を使用したすべてのレシピは:

Javascript
function(doc, meta) 
{
  if (doc.totaltime &amp;&amp; doc.totaltime <= 20) 
  {
    if (doc.ingredients) {
      for (i=0; i < doc.ingredients.length; i++) 
      {
        if (doc.ingredients[i].ingredtext) 
        {
          emit(doc.ingredients[i].ingredtext, null);
        }
      }
    }
  }
}

上記の関数は、クエリとkeyパラメータを使用することによりレシピの選択をかなり早く、簡単にしています。料理時間と食材がビューによって生成されるとき、選択したレシピに必要な範囲に作用する代わりとなります。

これらの選択はアプリケーション固有のものですが、適切な値の範囲、例えば30、60、または90分の様々なビューを生成することによって、ビューインデックスを追加したときに発生する更新をせずに、レシピ選択がはるかに簡単になります。