mapreduce - Couchbase Map/Reduce 按文档类型统计总数

标签 mapreduce couchbase

我将事件数据存储在 Couchbase 文档中,如下所示:

{ 
  user: {
    id: '0BE2DA2B-9C8F-432D-88C2-B2C1D8D0E4B4',
    device: { 'manufacturer': 'Apple', 'os': 'iOS', 'name': 'iPhone', 'version': '5S' }
  },
  event_type: 'INTERACTION_A',
  country: 'GB',
  timestamp: 1398781631233
}

我创建了 Map/Reduce 查询来告诉我 iPhone 用户提交了多少事件。但是,是否可以使用 Map/Reduce 来查询操作系统有多少个唯一设备正在提交事件?

每个单独的设备可能已提交了 1000 个事件,但结果将显示系统已发现多少个不同的设备(按操作系统)。我试图最终得到如下所示的数据:

{ 'iOS': 2343, 'Android': 6343 }

是否可以在单个 Couchbase View 中执行此操作?

最佳答案

是的,这是可能的。您只需要使用 group=true&group_level=1在您的查询中。

创建如下 View :

map : function(){
  emit(doc.os, null);
}

reduce: _count

然后添加group=true&group_level=1您的查询:

http://127.0.0.1:8092/default/_design/dev_<designDocName>/_view/<viewName>?connection_timeout=60000&limit=10&skip=0&group=true&group_level=1

另请查看此链接以获取更多示例:

Writing a simple group by with map-reduce (Couchbase)

http://hardlifeofapo.com/basic-couchbase-querying-for-sql-people/

http://blog.couchbase.com/understanding-grouplevel-view-queries-compound-keys

关于mapreduce - Couchbase Map/Reduce 按文档类型统计总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23367907/

相关文章:

csv - 以编程方式从 CSV 文件格式创建 HBase 表并加载其内容

scala - 在Spark中读取压缩的xml文件

hadoop - 容器分配Hadoop集群中的容器大小

c++ - 在 osx 上安装 couchnode(couchbase nodejs 客户端)并出现编译错误

node.js - 使用 Nodejs SDK 在 Couchbase 中创建新存储桶

javascript - pouchdb 和 couchbase 同步网关

hadoop - 在 hadoop 中存储解析的日志数据并将其导出到关系数据库中

hadoop - Map Reduce 作业设计

cordova - 通过 REST-API 进行 Couchbase 移动复制

couchbase - 如何添加 couchbase 索引复制而不删除它