CouchDB Find One无法正常工作

And*_*rew 5 couchdb

我是一个couchDB新手,我正在O'Reilly CouchDB指南中做例子.

我使用视图按键检索文档时遇到问题:

curl http://127.0.0.1:5984/basic/_design/example/_view/by_date?key="2009/01/15 15:52:20"
Run Code Online (Sandbox Code Playgroud)

给出答复:

curl: (52) Empty reply from server
Run Code Online (Sandbox Code Playgroud)

但只是检索所有行:

curl http://127.0.0.1:5984/basic/_design/example/_view/by_date
Run Code Online (Sandbox Code Playgroud)

给了我3行,包括我正在寻找的特定行:

{"id":"hello-world","key":"2009/01/15 15:52:20","value":"Hello World"}

为什么关键查询不起作用?

我在Ubuntu 9.10上使用CouchDB版本0.10.0

Jas*_*ith 9

CouchDB的期望start_key参数是一个有效的JSON兼容类型,如"a string"12345["an", "array", "with", 5.0, "elements"].如果检查CouchDB日志,您可能会看到400(错误的客户端请求)条目,因为您的密钥是无效的UTF8或无效的JSON.

你可能有两个问题:

  1. shell正在解释必须实际发送到CouchDB的引号.尝试单引号引用双引号字符串.

  2. 您可能还需要对密钥进行编码,以使其成为有效的URL.具体来说,用你的空间替换%20

综上所述,以下内容适用于Ubuntu 9.10上的CouchDB 0.11.

$ curl http://127.0.0.1:5984/blog/_design/docs/_view/by_date?key='"2009/01/30%2018:04:11"'
{"total_rows":1,"offset":0,"rows":[
{"id":"biking","key":"2009/01/30 18:04:11","value":"Biking"}
]}
Run Code Online (Sandbox Code Playgroud)