バケット内に格納されたデータがJSONフォーマットもしくは、JSONの特徴を持っていない場合、その情報は中心的なデータベース層が返すJSONドキュメントに添付されるというかたちでデータベース内に格納されています。
これはその情報でビューを作成できないということではなく、その情報を格納するためのドキュメントキーを使用したビューで出力できるというように、ただ制限されるということです。
最も基本的なレベルでは、これはまだkeyの情報で範囲クエリを実行することができることを意味します。 例:
function(doc, meta) { emit(meta.id, null); }
ここでは出力されたキーデータと適切なstartkey
とendkey
の値を使用して範囲クエリを実行できます。
キーの構造化フォーマット、たとえばデータタイプの接頭辞、もしくは異なる要素と識別するために使用される区切り文字を使用する場合、ビュー関数は明示的にこの情報をビューに出力することができます。たとえば、ドキュメントIDがコロン区切りで一連の値として定義されているキーの構造を使用している場合:
OBJECTYPE:APPNAME:OBJECTID
各アイテムを個々に出力するためのJavaScriptのmap/reduceクエリの中でこの情報を解析することができます:例:
function(doc, meta) { values = meta.id.split(':',3); emit([values[0], values[1], values[2]], null); }
上記の関数は、オブジェクトタイプ、アプリケーション名、そして一意なオブジェクトIDを含むキーで構成されたビューを出力します。特別なオブジェクトタイプを使用しているすべてのエントリを取得するためにビューへ問い合わせすることができます:
startkey=['monster', null, null]&endkey=['monster','\u0000' ,'\u0000']