0

我在 couchDb 中有一个这样定义的视图

 function (doc) {
 if (doc.url) {
     var a = new Date(doc.postedOn);
     emit([a.toLocaleDateString(), doc.count, doc.userId], {
         _id: doc.userId,
         postTitle: doc.postTitle,
         postSummary: doc.postSummary,
         url: doc.url,
         count: doc.count
     });
  }
};

这为我提供了我想要的格式的结果。首先按日期排序,然后按计数,然后按用户 ID。

但是我无法查询它。我想要的是仅通过 userId 查询此视图。即保留日期和计数参数为空。

 _view/viewName?limit=20&descending=true&endkey=["","","userId"]

没有给我想要的结果。

我是否应该使用列表功能来过滤掉视图的结果。如果我这样做会对性能有任何影响吗?

权威指南中的这句话首先让我想到了可以使用列表函数来过滤和聚合结果。

强大的迭代器 API 允许灵活地动态过滤和聚合行,以及输出原始转换,以便轻松制作 Atom 提要、HTML 列表、CSV 文件、配置文件,甚至只是修改过的 JSON。

4

1 回答 1

1

列表功能与您的情况无关。从您链接到自己的文档中:

  • 虽然 Show 函数用于自定义文档呈现,但 List 函数用于相同目的,但针对 View 函数结果。

  • Show 函数用于表示各种格式的文档,通常是格式更好的 HTML 页面。它们还可用于运行服务器端功能,而无需预先存在的文档。

要解决您的问题,只需更改发出键的顺序,userId首先放置,即:

[ doc.userId, a.toLocaleDateString(), doc.count ]

并适当地更新您的查询。

如果更改发射键的顺序不是一个选项,只需创建另一个视图。

于 2013-04-10T17:07:44.093 回答