Couchbase 复合键,带范围过滤和排序以及按第二个键过滤



我有文档,看起来像

{
    ...
    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。

我应该怎么做?我的文档数量可以达到数百万,所以在代码端做一些事情是毫无疑问的。

至少

现在,我最终有 2 个单独的视图(按日期按用户和日期

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

相关内容

最新更新