まず第一に、目的が何であるかによっては、ここではビューが最善のアプローチではない場合があります。すべてのキーがわかっている場合は、ビューではなく CRUD 操作を使用する方が高速です。reduce を使用してすべてのキーの平均または最大値を求める必要がある場合、またはキーが単純に不明な場合は、ビューを使用するのが正しい方法です。
Couchbase Server の内部カウンタは、JSON ではなくバイナリとして保存されます。その結果、ビュー エンジンはバイナリを base64 に変換します。ドキュメントがdecode( decodeBase64(doc)
)されるとASCIIコードになります。次に、これを使用して文字列に変換するString.fromCharCode(decode[i])
必要があります。これは、各桁に対して順番に実行する必要があります。
たとえば、カウンター doc がの場合、デコードすると10 進文字列であるMg==
ASCII コードが含まれます。50
2
このビューでうまくいくはずです。
function (doc, meta) {
if (meta.id.indexOf("counter_") === 0) {
var decode = decodeBase64(doc);
var value = null;
for (i = 0; i < decode.length; ++i) {
if (value == null) {
value = String.fromCharCode(decode[i]);
} else {
value += String.fromCharCode(decode[i]);
}
}
emit(meta.id, parseInt(value));
}
}