CouchDB中是否有可能从文档中检索单个值?例如,我有一个包含10000个键的文档,如下所示:
{
"_id": "8098091cc795acde43cd45335373cc92",
"_rev": "2-6d2e0ac43618388cc958b91e5015bba5",
"1":"some value",
"2":"another value",
...
"10000":"last value"
}
Run Code Online (Sandbox Code Playgroud)
我不想每次解析整个文档,只是想获得键"2"的值.这可能吗?
编辑:
当然,在提出这个问题之前,我查看了文档,然后搜索了这个问题,但没有找到这种可能性.但我想知道为什么这是不可能的?根据我的理解,视图和文档之间没有太大的区别,因为它们都是键值对的集合,但是可以?key=...在查询字符串中使用视图中的单个值,而不可能对文档执行相同的操作.为什么?
您可以使用CouchDB show函数处理服务器上的文档并将任意数据发送到客户端.显示函数可以执行简单的操作,例如从文档中提取单个值; 或者他们可以转换为完全不同的内容类型,如XML.
例如:
db_design/example具有show功能的设计文档one_fielddoc_idsome_field具有值的字段"I am the some_field value!"该查询将是:
GET /db/_design/example/_show/one_field/doc_id?name=some_field
Run Code Online (Sandbox Code Playgroud)
show函数看起来像这样:
function(doc, req) {
// _show function to extract one field
var field_name = req.query.name; // Set to e.g. "some_field"
var field_value = doc[field_name];
return { "code": 200 // HTTP status code
, "headers": // Response headers
{ "content-type": "text/plain" }
, body: field_value
};
}
Run Code Online (Sandbox Code Playgroud)
设计文档如下所示:
{ "_id": "_design/example"
, "shows":
{ "one_field": ... } // Paste the above function as a string.
}
Run Code Online (Sandbox Code Playgroud)
CouchDB将返回
HTTP 200 OK
Content-Type: text/plain
Content-Length: 26
I am the some_field value!
Run Code Online (Sandbox Code Playgroud)