2016-12-13 81 views
0

意見比方說,我有1000個項目是這樣的:排序按屬性進行分頁

{ "_id": "12345", "type": "item", "name": "whatever", "timestamp": 1481659373 } 

而且我有隻抓住一個特定類型的視圖。

查看

function (doc) { emit([doc.type], doc._id); } 

參數

startkey: ["item"] 
endkey: ["item"] 
include_docs: true 

我知道我可以使用offsetlimit的分頁。但是我試圖按降序先取得最新的時間戳。我看到有一個descending選項,但它看起來像你只將它設置爲true,所以我不確定它的功能。

有沒有人有任何指導我如何做到這一點?

回答

1

如果修改地圖功能如下:

function (doc) { emit([doc.type, doc.timestamp], doc._id); } 

然後在視圖中的鍵將被按類型按時間戳排序,然後。

然後,我們可以查詢視圖,像這樣:

startkey: ["itemz"] 
endkey: ["item"] 
descending: true 
include_docs: true 

先獲取最新的文檔。 descending標誌表示您需要相反順序的項目,但您還必須確保startkey具有較大的價值。

+0

剛剛在這裏添加一個小記錄,'start_key'和'end_key'應該看起來像這樣得到最好的結果:'[「item」,{}]和'[「item」]'' 。 '{}'是一個明顯的「高價值」,比追加「z」這樣的字符更好。 –

+0

感謝@DominicBarnes的澄清。 「{}」真的是一個很高的價值,還是僅僅是一個例子? – bryan

+0

如果您想獲得_technical_,根據[文檔](http://docs.couchdb.org/en/2.0.0/couchapp/views/collat​​ion.html),最好的「高價值」實際上是\ ufff0 ?highlight = high%20value#string-ranges),但是{}'更容易記住,儘管它不再是100%的保證。 –