根本的な問題-私のドキュメントに「カテゴリ」とタイムスタンプがあるとしましょう。過去2時間以内のタイムスタンプを持つ「foo」カテゴリのすべてのドキュメントが必要な場合は、簡単です。
function (doc) {
emit([doc.category, doc.timestamp], null);
}
次に、次のようにクエリします
GET server:5894/.../myview?startKey=[foo, |now - 2 hours|]&endkey=[foo, |now|]
問題は、過去2時間以内にfooまたはbarのカテゴリに何かが必要な場合に発生します。時間を気にしない場合は、キーコレクションを介してキーで直接プルすることができます。残念ながら、範囲にはそのようなオプションはありません。
その間に私がやったことは、タイムスタンプを2時間のブロックに丸めてから、クエリを多重化することです。
POST server:5894/.../myview
keys=[[foo, 0 hours], [foo, 2 hours], [bar, 0 hours], [bar, 2 hours]]
動作しますが、(ブロックサイズとの関係で)かなりの時間を戻したい場合は面倒になります。
キーに似た、複数のstartKey / endKeyペアをビューに送信する方法はありますか:キー用に投稿できる[]配列?