3

作成したデザイン ビューを返すキー フィールドの配列を含む値でドキュメントをフィルター処理したいと考えています。

// _design/products/_view/all
function(doc) {
    if (doc.type && doc.type == 'producto'){
        emit([doc.created, doc.user], doc);
    }
}

結果:

{"total_rows":3,"offset":0,"rows":[
{"id":"64243f77b5135758d1f0d55c250001f5","key":[1364931254000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c250001f5","_rev":"3-50f67780d6388f3aad469dbdd1081b9e","nombre":"limon ","precio":250,"user":"samuelb1311","created":1364931254000,"type":"producto"}},
{"id":"64243f77b5135758d1f0d55c2500058e","key":[1364931381000,"samuel123"],"value":{"_id":"64243f77b5135758d1f0d55c2500058e","_rev":"3-c1f893af011ee5a3687b0a9eeedc3467","nombre":"lima ","precio":360,"user":"samuel123","created":1364931381000,"type":"producto"}},
{"id":"64243f77b5135758d1f0d55c25000e7a","key":[1364931447000,"samuelb1311"],"value":{"_id":"64243f77b5135758d1f0d55c25000e7a","_rev":"3-2b05730dfcf3407b7335ec029e5cfdc5","nombre":"naranja ","precio":25,"user":"samuelb1311","created":1364931447000,"type":"producto"}}
]}

最初に挿入されたものから最後に挿入されたものまで、またはその逆に情報を昇順および降順で並べ替えるには、キーに日付が必要です。
では、ユーザー「samuelb1311」やユーザー「samuel123」など、ユーザーごとに情報をフィルタリングするにはどうすればよいですか?
startkey や endkey などを試してみましたが、これはうまくいきません。空の応答が返されます。
あなたが私にもたらすことができるいくつかの情報をありがとう!

4

1 に答える 1

3

特定のユーザーのエントリのみを取得できるようにするには、順序またはタイムスタンプとユーザーを逆にする必要があります。これは、startkey/endkey を使用する場合、キーでソートされたエントリから連続した範囲しか取得できないためです。次に、次のように startkey と endkey を使用します。

startkey=["foo"]&endkey=["foo","a"]

http://wiki.apache.org/couchdb/View_collat​​ion?action=show&redirect= ViewCollat​​ion をご覧ください

于 2013-04-02T20:36:04.123 に答える