要查询沙发数据库,您可以发送一个 http GET 请求,样式为
host:5984/db/_design/some_view/_view/view1?key="foo"
要制作一个名为 view1 的简单视图,我可以创建地图
function(doc){
emit(doc.bar,doc);
}
这将生成一个键值对列表,其中 doc.bar 是键,doc 是值。在这种情况下,它是 db 的一个子集,其中 doc.bar = "foo"
似乎 emit 函数将其参数与随 URL 请求传递的关键参数进行比较。
如何从 URL 获取密钥的值并在传递它以发出之前对其进行检查?
MapReduce不是这样工作的。
映射(和化简)函数不会在每个对象的每个查询中调用。为每个更新的对象调用它们(在查询时)。
这意味着,只要"文档"(又名对象)不被更改,发出的键和值就会保留在索引中。缓存管理是MapReduce如此高效的原因。
换句话说,不要将索引视为查询结果,而是将所有可能结果的预期。
在文本框中进一步解释MapReduce几乎是不可能的:我建议你遵循教程和视频。
虽然您已经了解了MapReduce的基础知识,但您将学习如何使用CouchDB(使用key
,或startkey
和endkey
)查询索引,以及如何格式化响应(如果需要,请使用自定义参数)。