Couchdb查看生成

时间:2013-01-04 19:25:30

标签: couchdb couchdb-futon

我正在学习couchdb,所以我有一个非常基本的问题。假设我有一个名为email的沙发数据库,​​其中的文档如下:

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

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

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

我想创建两个视图

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);} }"
        }
    }
}

我想我在那里做错了,所以它不起作用。任何人都可以建议如何写这三个观点吗?

1 个答案:

答案 0 :(得分:1)

创建一个这样的视图

function(doc){
  emit([doc.status, doc.sent_at], doc); 
}

查询#1

在curl语句(或Ruby库或其他)中尝试这些参数

startkey = ["sent"]
endkey = ["sent",{}]

查询#2

startkey = ["failed", 11715157]
endkey = ["failed", {}]

查询#3

startkey = ["sent"]
endkey = ["sent", {}]
descending = true

我没有对此进行测试,但应该指出正确的方向。