样本CouchDB集中的样本映射函数是什么意思?

时间:2015-03-21 12:01:09

标签: javascript database mapreduce couchbase

Couchbase带有大量的啤酒。 2ms的获取时间令人印象深刻,但我不明白以下地图功能实际上做了什么:

function(doc, meta) {
  switch(doc.type) {
  case "brewery":
    emit([meta.id]);
    break;
  case "beer":
    if (doc.brewery_id) {
      emit([doc.brewery_id, meta.id]);
    }
    break;
  }
}

我无法将我的大脑包裹起来。这meta来自哪里?

enter image description here

2 个答案:

答案 0 :(得分:1)

  

我无法绕过它。这个元东西来自哪里?

Couchbase服务器为每个存储的文档(json或二进制文件)补充元数据。在视图编辑器中,您可以在"预览随机文档"的右侧窗格中看到元数据。例如,在您的问题的屏幕截图中,meta.id将是" labbat_ontario_breweries_labbat_50"如右侧所示。

meta.id是文档的实际键,它始终存在于包含视图的任何返回文档中(即使您未将键值显式包含在视图输出中) 例如例如,此视图仅输出doc.name,但元数据仍然存在于该视图中的任何返回行。您可以在json结果中访问meta.id元素。

function(doc, meta) {
    emit(doc.name,null);
}

答案 1 :(得分:0)

在开始使用couchBase时我也很困惑

您指向的代码在couchbase中是一个非常强大的功能。它允许创建一个预处理数据的视图,以便能够快速访问视图。

调用map函数来创建视图,在map函数中传递每个文档:

  • meta:存储文档的元数据,包含到期时间,文档ID,修订版和其他信息。

更多信息:

http://docs.couchbase.com/admin/admin/Views/views-writing.html