具有多键格式的CouchDB查询视图

问题描述 投票:13回答:3

我在使用多个键时获取couchdb视图以返回正确的文档时遇到问题。

这工作正常,返回匹配的文档:

GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?key=abc123

返回返回视图中的所有文档,匹配与否:

GET http://example.com:5984/myDb/_design/myFilters/_view/getItemByForeignKeyId?keys=%5B%22abc123%22%5D

我通常非常擅长寻找答案。但是,CouchDB文档对使用多个密钥的格式非常清楚。我见过一些使用?keys = [123,123]而且我也见过?keys =“abc”,“abc”。

如果有人能够使用GET方法对CouchDB的“正确”格式和多个关键查询的编码做出任何澄清,我将非常感激。

views key couchdb
3个回答
17
投票

要从视图中获取多个密钥,您需要执行发布请求并在请求正文中提交密钥。您的HTTP请求将如下所示:

POST /myDb/_design/myFilters/_view/getItemByForeignKeyId
Content-Type: application/json

{
   "keys" : [
      "abc",
      "123"
   ]
}

7
投票
function(doc){
    {
        if([doc.key1, doc.key2])
            emit([doc.key1, doc.thingYouWantToKnow]);
    }
}

并在查询字符串中,最后

?key=["key1Value", "key2Value"]

请注意,它是key=[],而不是keys=[] !!!!!!!!!


5
投票

不是说它是正确的,但你也可以通过查询字符串来实现。不应对包含括号的数组进行编码。例如。这对我有用:

http://localhost:5984/test/_design/artists_albums/_view/albums_by_artist?keys=[%22Super%20bad%20artist%22,%20%22Fake%20artist%201%22]

© www.soinside.com 2019 - 2024. All rights reserved.