示例 CouchDB 集中的这个示例映射函数是什么意思?

What does this sample map function in sample CouchDB Set mean?

Couchbase 附带大量啤酒。 2 毫秒的获取时间令人印象深刻,但我不明白以下地图函数的实际作用:

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东西是从哪里来的?

一开始我对 couchBase 也很困惑

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

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

  • meta : 存储文档的元数据,包含过期时间、文档ID、修订等信息。

更多信息在这里:

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

I can't wrap my brain around it. Where is this meta thing coming from?

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

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

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