Couchdb视图,找到条件

时间:2018-09-01 05:17:03

标签: view couchdb

我是Couchdb的新手,我不知道他们的设计。 我知道我们必须使用emit()进行搜索。 如何在这些条件下(如SQL)在视图上发出请求?

Where A = 'b' && Date >= 2010 && Date <= 2020

2 个答案:

答案 0 :(得分:0)

您需要发出一个多变量密钥,例如

# map
function(doc) {
    if (doc.A && doc.Date) {
        emit([doc.A, doc.Date], 1)
    }
} 

# reduce
_count

然后您可以查询它

curl 'https://host.com/DB/_design/DDOC/_view/VIEW?reduce=false&include_docs=true&inclusive_end=true&startkey=\["a",2010\]&endkey=\["a",2020\]'

您可以在我制作的数据库中自己尝试,该数据库可供读取。

curl 'https://skruger.cloudant.com/stackex/_design/examples/_view/by-a-date?reduce=false&include_docs=true&inclusive_end=true&startkey=\["a",2010\]&endkey=\["a",2020\]'

答案 1 :(得分:0)

如果您使用的是CouchDB 2.X,则可以使用Mango作为替代。我发现它更易于使用和理解。

{
    "A":"b",
    "$and":[
        {
            "Date": {
                "$gte":2010
            }
        },
        {
            "Date":{
                "$lte":2020
            }
        }
    ]
}

您可能希望为此查询建立索引,使其具有与其他替代响应一样快的速度。