列表功能是否适合我的场景?

时间:2013-04-10 16:49:58

标签: couchdb

我在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来查询这个视图。这就是让date和count参数为null。

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

没有给我预期的结果。

我是否应该使用list function过滤掉视图的结果。如果我这样做会对性能产生任何影响吗?

definitive guide的引用首先让我想到列表函数可用于过滤和汇总结果。

  

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

1 个答案:

答案 0 :(得分:1)

列表功能与您的案例无关。从你与自己联系的文档:

  •   

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

  •   

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

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

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

并相应地更新您的查询。

如果无法更改发出的键的顺序,只需创建另一个视图。