0

私はcouchdbを学んでいるので、非常に基本的な質問があります。emailドキュメントが次のようになっている場所という名前のCouchデータベースがあるとします。

{
  "_id": "fe7759fdf36t",
  "status": "sent",
  "sent_at": 1357151443,
}

{
  "_id": "ewrwe4a38d2353",
  "status": "failed",
  "sent_at": 2347151421,
}

{
  "_id": "f4559fjffd2353",
  "status": "sent",
  "sent_at": 11715154,
}

2つのビューを作成したい

1)すべてのドキュメントを取得する場所status = sent
2)すべてのドキュメントを取得する場所status = failed and sent_at > 11715157
3)sent_at降順/昇順で並べ替えられたすべてのドキュメントを取得するstatus = sent

(1)について、私は書いた、

{
    "_id": "_design/sentdoc",
    "_rev": "2-dd88de7196c06eed41d2d83a958f0388",
    "views": {
        "query": {
            "map": "function(doc) { if(doc.status == 'sent') {emit(doc_id, doc);} }"
        }
    }
}

私はそこで何か間違ったことをしていると思うので、それは機能していません。誰かがこれら3つのビューすべてを書く方法を提案できますか?

4

1 に答える 1

1

このようなビューを作成します

関数(ドキュメント){
  エミット ([doc.status, doc.sent_at], doc);
}

クエリ #1

これらのパラメーターをcurlステートメント(またはRubyライブラリなど)で試してください

startkey = ["送信済み"]
endkey = ["送信済み",{}]

クエリ #2

startkey = [「失敗しました」、11715157]
endkey = ["失敗", {}]

クエリ #3

startkey = ["送信済み"]
endkey = ["送信済み", {}]
降順 = true

私はこれをテストしていませんが、正しい方向に向ける必要があります。

于 2013-01-06T15:24:48.490 に答える