2012-04-30 54 views
2

我在CouchDB中有一個timestamp字段和一個group字段。我用這個視圖函數來獲取所有項目,其中組==「foo」的名單:CouchDB中的過濾和排序視圖?

{ 
    "map" : "function(doc) { emit(doc.group, doc); }" 
} 

http://localhost:5984/my_database/_temp_view?key="foo"

現在,我想使由timestamp字段排序輸出。我怎麼做?基本上,我想這個SQL查詢的當量:

SELECT * FROM SomeTable WHERE group=? ORDER BY timestamp

回答

2

發射時間戳爲第二個柱:

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

然後,查詢使用以下參數:

view?startkey=["foo"]&endkey=["foo",""] 

我假設你的時間戳是數字,而不是字符串。閱讀this以瞭解數字時間戳將如何在["foo"]["foo",""]之間進行排序。

另外,不要發出doc作爲值,它使用了大量的存儲空間。如果您確實需要該文檔,請在查詢中使用include_docs=true

+0

謝謝,這正是我所需要的。 –