2016-11-07 49 views
0

我有包含用戶名(帖子的作者)和時間戳(上傳時間)等字段的帖子。我很努力地創建一個視圖,當查詢時,按照時間戳的降序來抓取特定用戶的帖子。CouchDb由用戶按降序時間戳順序對帖子進行排序

map: function(doc) { 
    if (doc.type == 'post'){ 
     emit(doc.username, [doc._id, doc.timestamp]); 
    }; 
}, 

我可以查詢由特定用戶創作的文檔,但我如何僅在時間戳字段上應用遞減= true?

回答

1

使用CouchDB視圖,只有密鑰可以確定索引的排序順序。該值根本不包括排序/分組。因此,如果您希望有一個按創建順序(升序或降序)輸出用戶帖子的視圖,則會發出一個數組作爲一種「組合鍵」。我強烈建議閱讀CouchDB文檔中的Guide to Views

對於你的榜樣,我會做一個地圖功能是這樣的:

function (doc) { 
    if (doc.type === 'post') { 
    emit([ doc.username, doc.timestamp ]); 
    } 
} 

然後,你可以得到一個特定用戶的帖子中包含的查詢:

?start_key=["username"]&end_key=["username","\ufff0"] 

這將找到由時間戳升序排列的給定「用戶名」的帖子。爲了扭轉排序,改用以下查詢:

?start_key=["username","\ufff0"]&end_key=["username"]&descending=true 

注意,對於start_keyend_key值已交換,並descending=true已添加。

如前所述,請仔細閱讀他們的文檔,因爲它是圍繞使用CouchDB視圖的最佳方式的絕佳方式。

相關問題