這裏有一堆關於使用CouchDB分頁的問題,但沒有一個完全符合我想知道的內容。使用可變鍵的CouchDB分頁
基本上,我有一個按票數排序的結果集,而且我想按降序瀏覽整個集合。
以下是map
供參考。
function(doc) {
emit(doc.votes);
}
現在,問題所在。我發現startkey_docid
不適用於它自己。您必須將其與startkey
結合使用。問題是,對於查詢,我不使用startkey
參數(我不想限制結果,只是得到最多 - >至少)。我想我可以使用startkey = {{doc.votes}} & startkey_docid = {{doc._id}}來代替,但是在某人點擊「下一頁」鏈接時,文檔的投票數可能已經改變。
解決這個問題的方法似乎很明顯:只需設置startkey=99999999
,以便它將返回數據庫中的所有文檔,並且我可以使用startkey_docid
從我們上次停止的那個開始。奇怪的是,當我這樣做時,startkey_docid
停止工作,並只允許所有結果再次返回。顯然startkey
需要完全等於在startkey_docid
中使用_id
的文檔上的密鑰。
我在問的是,是否有人知道使用startkey_docid
來解決實際startkey
在您想使用它時可能發生變化的解決方法?我的應用程序是否應該通過_id
查找文檔,並立即使用doc.votes
值,希望它在請求之間的幾毫秒內沒有改變?即使這似乎不是很可靠。
編輯:結束切換到Mongo的速度,所以這個問題原來是有點沒有意義。
其實我不確定你的回答是否正確,但是你做得很好,應該注意。 – Ph0en1x