2016-12-14 85 views
-1

我有一個數據集,看起來與此類似:如何通過時間戳返回最新記錄?

{"user":333,"product":943, "rating":2.025743791177902, "timestamp":1481675659} 
{"user":333,"product":3074,"rating":2.1070657532324493,"timestamp":1481675178} 
{"user":333,"product":3074,"rating":2.108323259636257, "timestamp":1481673546} 
{"user":333,"product":943, "rating":2.0211849667268353,"timestamp":1481675178} 
{"user":333,"product":943, "rating":2.041045323231024, "timestamp":1481673546} 
{"user":333,"product":119, "rating":2.1832303461543163,"timestamp":1481675659} 
{"user":333,"product":119, "rating":2.1937538029700203,"timestamp":1481673546} 
{"user":111,"product":123, ... 

我想查詢所有記錄的用戶(例如333),但只返回最新的時間戳:

{"user":333,"product":119, "rating":2.1832303461543163,"timestamp":1481675659}  

是這可能與地圖/減少指數?如果是這樣,怎麼樣?

理想情況下,我也想按照評分值排序。

+0

Downvoter - 我不知道你對這個問題不喜歡什麼,以及如何改進它,除非你在downvote時添加評論。 –

回答

1

如果你創建一個這樣

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

一個地圖功能的指數將在用戶&時間順序產生。

要返回最新(最近)日期和時間給定用戶可查詢以下參數指標:

startkey=[333,9999999999] 
endkey=[333,0] 
descending=true 
limit=1 

我們正在查詢以相反的順序指數,從該最大的時間戳但將結果集大小限制爲1 - 最新的條目。