具有范围过滤功能的Couchbase复合键按第二个键

时间:2016-07-13 08:27:49

标签: mapreduce couchbase couchbase-view

我有文件,看起来像

{
    ...
    date: '2013-05-25T04:06:20.277Z',
    user: 'user1'
    ...
}

我需要查找具有给定范围内的日期和给定用户的文档。我还需要按日期排序。

我已经尝试了emit([doc.user, dateToArray(doc.date)], null)但是有了这个,我无法按日期排序,因为AFAIK需要排序的键必须在左侧。这是对的吗?

如果我试图反过来翻转键,无论我在startKey& endKey它不会改变任何东西。

例如:startKey:[[0,11,21,0,0,0],"user1"],endKey:[[2016,11,21,0,0,0],"user1"]查找来自所有用户的文档,即使我认为它只能查找文档,其中第二个键是user1。

我该怎么做?我的文档数量可能高达数百万,所以在代码端做一些事情是不可能的..

1 个答案:

答案 0 :(得分:0)

至少现在,我最终有2个单独的观点( byDate byUserAndDate

当我需要仅按日期查找时,我使用 byDate 视图,其中日期为唯一键,排序工作正常。此外,当我按特定用户搜索时,我使用 byUserAndDate ,其中[doc.user, doc.date]作为其复合键,当结果仅包含1个用户的项目时,排序显然正常,因为它将排序按用户先行,然后按日期。