【发布时间】:2011-03-08 21:50:53
【问题描述】:
我想使用 CouchDB 视图 API 在应用程序级别创建分页。分页使用游标,所以给定一个游标,我将在视图中查询以给定游标作为开始键的n+1 文档,并将n 结果作为页面输出,并提供n+1 结果行作为游标下一页。
只要视图键也是我的视图行的键,这很有效。现在这一次我所有的文档都有一个日期字段,我将它们作为映射键发出,因为我想按日期排序。但是,我不能再像以前那样使用我的光标了。
我认为这就是视图 API 还提供 startkey_docid 来提交此类游标文档 ID 的原因,但这显然不是真的。似乎只有在每个键有几个相等的行时才应用此值。
所以,简而言之:我想要一个按日期排序的视图,但光标基于文档 ID。我该怎么做?
提前致谢
Simplified view
function map(doc)
{
emit(doc.date, {_id: doc._id});
}
Simplified view result:
{
"rows":[
{"id":"123","key":"2010-06-26T01:28:13.555Z", value:{...}},
{"id":"234","key":"2010-06-22T12:21:23.123Z", value:{...}},
{"id":"987","key":"2010-06-16T13:48:43.321Z", value:{...}},
{"id":"103","key":"2010-05-01T17:38:31.123Z", value:{...}},
{"id":"645","key":"2009-07-21T21:21:13.345Z", value:{...}}
]
}
Application-level query with cursor 234, page size 3 should return:
234, 987, 103
那么如何将其映射到视图?
【问题讨论】:
标签: couchdb