2013-07-15 19 views
0

嗨,我是新來的couchbase。我有一個像下面這樣的視圖:我如何在Couchbase中的特定列上對數據進行排序?

function (doc, meta) { 
    if(doc.docType == "DeviceData") 
    emit([doc.group, doc.time], [doc.node, doc.node_gps_lat, doc.node_gps_long]); 
} 

所以我想得到結果,它是由doc.node值排序。我搜索了文檔,但找不到合適的解決方案。

請在這方面需要幫助。

回答

2

Couchbase排序結果按鍵。因此,在您的示例中,結果將首先按doc.group排序,然後按doc.time排序。如果您想按doc.node對結果進行排序,則應該在鍵中包含該字段或在客戶端/應用程序端對結果進行排序。

如果你quering一些時間範圍您的視圖(你有startkeyendkey通過doc.time PARAM在previous question不同等)由doc.node排序是唯一可能在客戶端/應用程序方面。如果你想在couchbase上進行排序 - 嘗試改變你的數據模型。

這是一個doc,它解釋了在couchbase中的排序。這裏是doc,解釋了couchbase如何排序查看結果。

0

我想我正在增加m03geek上面所說的,爲了按特定列(CB中的值)進行排序,您需要將該值作爲關鍵字返回。我正在使用CB構建一個Django應用程序,並且我想按創建日期排序,所以我創建了下面的視圖映射函數。

function (doc, meta) { 
 
\t if (doc.type && doc.type == "snapshot" && doc.published == "yes" && doc.section == "sports") { 
 
\t \t var arrDate = doc.create_date.split("-"); 
 
      \t var newDate = new Date(arrDate[2], arrDate[0], arrDate[1]); 
 
      \t var numTime = newDate.getTime(); 
 
      \t doc.time = numTime; 
 
      \t emit(doc.time, null); 
 
\t } 
 
}

在上面的映射函數,我把字符串創建日期爲數值時間,然後發射出作爲排序由創建日期的結果的關鍵。

相關問題