2012-12-21 27 views
0

排序我有發射值如何獲得在CouchDB的多個按鍵按日期

function(doc) { 
var d = new Date(doc.created_date); 
emit([d,doc.unique_id],doc); 
} 

這裏我得到多個UNIQUE_ID在一個查詢視圖。所以我使用Keys = [「unique_id1」,「unique_id1」]來獲得ID的..但我需要他們按日期排序,也得到unique_id的。如果我查詢如上所述我沒有從db.but得到任何結果,但如果我改變視圖如下,並查詢它我正在得到的結果正確,但沒有按日期排序。

function(doc) { 
emit(doc.unique_id,doc); 
} 

任何人都可以建議我如何在一個單一的查詢?

Select * from db where unique_id in {"1","3"} order by date 

這就是我需要的CouchDB

回答

0

你不能做到這一點。在CouchDB中,您可以使用唯一鍵或一組鍵來查詢,也可以查詢範圍。因此,如果您想通過一組唯一ID進行查詢,而無需在查詢中指定其創建日期,則不能在密鑰中包含創建日期,因此CouchDB無法按創建日期排序。在這種情況下,您可以使用唯一ID的密鑰,並在客戶端(即查詢後)通過created_date對結果進行排序。

另一種方法是指定一個包含[unique_id,created_date]的密鑰,但在這種情況下,您不能查詢[1,*]和[3,*]而不包括[2,*](它在查詢之後,客戶端可以再次過濾掉)。

+0

雅謝謝你的幫助。實際上,我需要根據Created_date對文檔進行排序..但我還需要使用它的唯一標識符。所以我需要如何通過鑰匙來獲得這項工作..? – Ramesh

+0

您應該使用unique_id唯一鍵(即您的第二個視圖函數),然後在您的客戶端代碼中對結果進行排序。 – djc

+0

這就是我有的概率....我需要文檔被排序在服務器端本身,因爲我使用分頁。所以我不能把文檔帶到客戶端並對其進行排序,因爲它會給我無序的結果。 – Ramesh