1

要查询沙发数据库数据库,您可以发送 http GET 请求,其样式为

主机:5984/db/_design/some_view/_view/view1?key="foo"

要创建一个名为 view1 的简单视图,我可以创建地图

function(doc){
  emit(doc.bar,doc);
}

这将生成一个键值对列表,其中 doc.bar 是键, doc 是值。在这种情况下,它是 db 的子集,其中 doc.bar = "foo"

似乎发出函数将其参数与通过 URL 请求传递的关键参数进行比较。

我如何从 URL 中获取 key 的值并在它被传递给发出之前对其进行检查?

4

1 回答 1

1

MapReduce 不是这样工作的。

Map(和reduce)函数不会在每个对象的每个查询中调用。为每个更新的对象调用它们(在查询时)。

这意味着,只要“文档”(又名对象)没有更改,发出的键和值就会保存在索引中。缓存管理是 MapReduce 如此高效的原因。

换句话说,不要将索引视为查询结果,而是将其视为所有可能结果的预期。

在文本框中进一步解释 MapReduce 几乎是不可能的:我建议您关注教程和视频。

虽然您已经了解了 MapReduce 的基础知识,但您将学习如何使用 CouchDB(使用、或和)查询索引,以及如何格式化响应(如果需要,使用自定义参数)。keystartkeyendkey

于 2013-10-22T12:57:21.947 回答