根本问题 - 假设我的文档有“类别”和时间戳。如果我想要时间戳在过去两个小时内的“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 对发送到视图,类似于可以为键发布的键:[] 数组?