2016-11-07 14 views
0

私は、ユーザー名(投稿者)とタイムスタンプ(アップロードされた時間)のようなフィールドを持っています。私は質問をすると、タイムスタンプの降順で特定のユーザーが投稿を取得するビューを作成するのに苦労しています。CouchDbは、ユーザーがタイムスタンプの降順で投稿を並べ替えます。

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

私は、特定のユーザーが作成した文書を照会することができますが、どのように私は、タイムスタンプフィールドに=真降順適用されていますか?

答えて

1

CouchDBビューでは、のキーのみがインデックスのソート順を決定できます。この値はソート/グループ化をまったく考慮しません。

このように、作成(昇順または降順)の順に投稿を出力するビューを作成する場合は、配列を「合成キー」の一種として出力します。 CouchDBのドキュメントでGuide to Viewsを読むことを強くお勧めします。わかります

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

:あなたのようなクエリを使用して特定のユーザーの投稿を取得することができ、その後

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

ご例えば

が、私はこのようなマップ機能になるだろう指定された「ユーザ名」の投稿を、タイムスタンプの昇順で並べ替えます。

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

start_keyend_keyの値が入れ替わっていることに注意してください、とdescending=trueが追加されました:順序を逆にするには、代わりに次のクエリを使用します。

前述のように、CouchDBのビューを使用する最良の方法を頭で囲むのに最適な方法であるので、ドキュメントを読んでください。

関連する問題