Основная проблема - скажем, мои документы имеют "категории" и временные метки. Если я хочу, чтобы все документы в категории "foo" имели временную метку, которая в течение последних двух часов была простой:
function (doc) {
emit([doc.category, doc.timestamp], null);
}
а затем запрос как
GET server:5894/.../myview?startKey=[foo, |now - 2 hours|]&endkey=[foo, |now|]
проблема возникает, когда я хочу что-то в категориях foo или bar в течение последних двух часов. Если бы я не заботился о времени, я мог бы просто потащить ключ через ключ. к сожалению, у меня нет такой опции с диапазонами.
То, что я закончил, тем временем округляет метку времени до двухчасовых блоков, а затем мультиплексирует запрос:
POST server:5894/.../myview
keys=[[foo, 0 hours], [foo, 2 hours], [bar, 0 hours], [bar, 2 hours]]
Это работает, но будет беспорядочно, если я хочу вернуться к большому количеству времени (в зависимости от блока).
Есть ли способ отправить несколько пар startKey/endKey в представление, похожее на массив ключей: [], который может быть отправлен для ключей?