我想使用CouchDB視圖API在應用程序級別創建分頁。分頁使用遊標,因此如果給定遊標,我將查詢以給定遊標作爲開始鍵開始的n+1
文檔的視圖,並將n
結果作爲頁面輸出,並提供n+1
結果行作爲下一頁的遊標。CouchDB分頁按日期排序,按ID查詢
只要視圖鍵也是我的視圖行的鍵,這很有效。現在這次我所有的文檔都有一個日期字段,並將它們作爲地圖鍵發出,因爲我想通過日期進行排序。但是,我不能再像以前那樣使用我的遊標了。
我認爲這就是視圖API也提供startkey_docid
提交這樣一個光標doc 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
所以,我怎麼能這樣映射到一個看法?
嗯,你的標籤用例略有不同。但要採取博客的例子。想想擁有日期的博客條目。您知道按日期排序的條目分類,而不使用因性能原因應避免的限制/跳過模式。 – 2010-06-27 22:48:10
哦,我想用遊標而不是頁碼的原因是因爲它們是無狀態的。這對我的REST用例是必需的。 – 2010-06-27 22:50:48
「只要視圖鍵也是我的視圖行的鍵,就可以很好地工作。」 這是你在原始問題上丟失了我的部分。這可能是一個讓事情比它更復雜的例子。 這裏只是按日期分類: http://jchris.couchone.com/sofa/_design/sofa/_list/index/recent-posts?descending=true&limit=10 – 2010-06-27 22:51:07