2016-12-14 4 views
-1

私はこれに似たデータセットがあります。私は、ユーザー(例えば333)のすべてのレコードを照会したいが、唯一の最新のタイムスタンプ返しますタイムスタンプで最新のレコードを返す方法は?

{"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, ... 

を:

{"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に制限する - 最新のエントリ。

関連する問題